{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Feature Engineering Notebook One: Data Prepocessing**  \n",
    "*Author: Yingxiang Chen, Zihan Yang*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Reference**:  \n",
    "- https://scikit-learn.org/stable/modules/preprocessing.html#preprocessing\n",
    "- https://towardsdatascience.com/preprocessing-with-sklearn-a-complete-and-comprehensive-guide-670cb98fcfb9\n",
    "- https://www.analyticsvidhya.com/blog/2016/07/practical-guide-data-preprocessing-python-scikit-learn/\n",
    "- Sarkar, D., Bali, R., & Sharma, T. (2018). Practical Machine Learning with Python. A Problem-Solvers Guide To Building Real-World Intelligent Systems, Berkely.\n",
    "- https://contrib.scikit-learn.org/categorical-encoding/index.html\n",
    "- https://towardsdatascience.com/all-about-categorical-variable-encoding-305f3361fd02\n",
    "- https://stats.idre.ucla.edu/r/library/r-library-contrast-coding-systems-for-categorical-variables/\n",
    "- https://kiwidamien.github.io/james-stein-encoder.html\n",
    "- https://chris-said.io/2017/05/03/empirical-bayes-for-multiple-sample-sizes/\n",
    "- http://support.sas.com/documentation/cdl/en/prochp/66704/HTML/default/viewer.htm#prochp_hpbin_details02.htm\n",
    "- https://catboost.ai/docs/concepts/algorithm-main-stages_cat-to-numberic.html\n",
    "- https://docs.featuretools.com/en/stable/index.html\n",
    "- https://heartbeat.fritz.ai/introduction-to-automated-feature-engineering-using-deep-feature-synthesis-dfs-3feb69a7c00b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc": true
   },
   "source": [
    "<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
    "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#Data-Prepocessing\" data-toc-modified-id=\"Data-Prepocessing-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>Data Prepocessing</a></span><ul class=\"toc-item\"><li><span><a href=\"#Static-Continuous-Variables\" data-toc-modified-id=\"Static-Continuous-Variables-1.1\"><span class=\"toc-item-num\">1.1&nbsp;&nbsp;</span>Static Continuous Variables</a></span><ul class=\"toc-item\"><li><span><a href=\"#Discretization\" data-toc-modified-id=\"Discretization-1.1.1\"><span class=\"toc-item-num\">1.1.1&nbsp;&nbsp;</span>Discretization</a></span><ul class=\"toc-item\"><li><span><a href=\"#Binarization\" data-toc-modified-id=\"Binarization-1.1.1.1\"><span class=\"toc-item-num\">1.1.1.1&nbsp;&nbsp;</span>Binarization</a></span></li><li><span><a href=\"#Binning\" data-toc-modified-id=\"Binning-1.1.1.2\"><span class=\"toc-item-num\">1.1.1.2&nbsp;&nbsp;</span>Binning</a></span></li></ul></li><li><span><a href=\"#Scaling\" data-toc-modified-id=\"Scaling-1.1.2\"><span class=\"toc-item-num\">1.1.2&nbsp;&nbsp;</span>Scaling</a></span><ul class=\"toc-item\"><li><span><a href=\"#Stardard-Scaling-(Z-score-standardization)\" data-toc-modified-id=\"Stardard-Scaling-(Z-score-standardization)-1.1.2.1\"><span class=\"toc-item-num\">1.1.2.1&nbsp;&nbsp;</span>Stardard Scaling (Z-score standardization)</a></span></li><li><span><a href=\"#MinMaxScaler-(Scale-to-range)\" data-toc-modified-id=\"MinMaxScaler-(Scale-to-range)-1.1.2.2\"><span class=\"toc-item-num\">1.1.2.2&nbsp;&nbsp;</span>MinMaxScaler (Scale to range)</a></span></li><li><span><a href=\"#RobustScaler-(Anti-outliers-scaling)\" data-toc-modified-id=\"RobustScaler-(Anti-outliers-scaling)-1.1.2.3\"><span class=\"toc-item-num\">1.1.2.3&nbsp;&nbsp;</span>RobustScaler (Anti-outliers scaling)</a></span></li><li><span><a href=\"#Power-Transform-(Non-linear-transformation)\" data-toc-modified-id=\"Power-Transform-(Non-linear-transformation)-1.1.2.4\"><span class=\"toc-item-num\">1.1.2.4&nbsp;&nbsp;</span>Power Transform (Non-linear transformation)</a></span></li></ul></li><li><span><a href=\"#Normalization\" data-toc-modified-id=\"Normalization-1.1.3\"><span class=\"toc-item-num\">1.1.3&nbsp;&nbsp;</span>Normalization</a></span></li><li><span><a href=\"#Imputation-of-missing-values\" data-toc-modified-id=\"Imputation-of-missing-values-1.1.4\"><span class=\"toc-item-num\">1.1.4&nbsp;&nbsp;</span>Imputation of missing values</a></span><ul class=\"toc-item\"><li><span><a href=\"#Univariate-feature-imputation\" data-toc-modified-id=\"Univariate-feature-imputation-1.1.4.1\"><span class=\"toc-item-num\">1.1.4.1&nbsp;&nbsp;</span>Univariate feature imputation</a></span></li><li><span><a href=\"#Multivariate-feature-imputation\" data-toc-modified-id=\"Multivariate-feature-imputation-1.1.4.2\"><span class=\"toc-item-num\">1.1.4.2&nbsp;&nbsp;</span>Multivariate feature imputation</a></span></li><li><span><a href=\"#Marking-imputed-values\" data-toc-modified-id=\"Marking-imputed-values-1.1.4.3\"><span class=\"toc-item-num\">1.1.4.3&nbsp;&nbsp;</span>Marking imputed values</a></span></li></ul></li><li><span><a href=\"#Feature-Transformation\" data-toc-modified-id=\"Feature-Transformation-1.1.5\"><span class=\"toc-item-num\">1.1.5&nbsp;&nbsp;</span>Feature Transformation</a></span><ul class=\"toc-item\"><li><span><a href=\"#Polynomial-Transformation\" data-toc-modified-id=\"Polynomial-Transformation-1.1.5.1\"><span class=\"toc-item-num\">1.1.5.1&nbsp;&nbsp;</span>Polynomial Transformation</a></span></li><li><span><a href=\"#Custom-Transformation\" data-toc-modified-id=\"Custom-Transformation-1.1.5.2\"><span class=\"toc-item-num\">1.1.5.2&nbsp;&nbsp;</span>Custom Transformation</a></span></li></ul></li></ul></li><li><span><a href=\"#Static-Categorical-Variables\" data-toc-modified-id=\"Static-Categorical-Variables-1.2\"><span class=\"toc-item-num\">1.2&nbsp;&nbsp;</span>Static Categorical Variables</a></span><ul class=\"toc-item\"><li><span><a href=\"#Ordinal-Encoding\" data-toc-modified-id=\"Ordinal-Encoding-1.2.1\"><span class=\"toc-item-num\">1.2.1&nbsp;&nbsp;</span>Ordinal Encoding</a></span></li><li><span><a href=\"#One-hot-Encoding\" data-toc-modified-id=\"One-hot-Encoding-1.2.2\"><span class=\"toc-item-num\">1.2.2&nbsp;&nbsp;</span>One-hot Encoding</a></span></li><li><span><a href=\"#Hashing-Encoding\" data-toc-modified-id=\"Hashing-Encoding-1.2.3\"><span class=\"toc-item-num\">1.2.3&nbsp;&nbsp;</span>Hashing Encoding</a></span></li><li><span><a href=\"#Helmert-Encoding\" data-toc-modified-id=\"Helmert-Encoding-1.2.4\"><span class=\"toc-item-num\">1.2.4&nbsp;&nbsp;</span>Helmert Encoding</a></span></li><li><span><a href=\"#Sum-(Deviation)-Encoding\" data-toc-modified-id=\"Sum-(Deviation)-Encoding-1.2.5\"><span class=\"toc-item-num\">1.2.5&nbsp;&nbsp;</span>Sum (Deviation) Encoding</a></span></li><li><span><a href=\"#Target-Encoding\" data-toc-modified-id=\"Target-Encoding-1.2.6\"><span class=\"toc-item-num\">1.2.6&nbsp;&nbsp;</span>Target Encoding</a></span></li><li><span><a href=\"#M-estimate-Encoding\" data-toc-modified-id=\"M-estimate-Encoding-1.2.7\"><span class=\"toc-item-num\">1.2.7&nbsp;&nbsp;</span>M-estimate Encoding</a></span></li><li><span><a href=\"#James-Stein-Encoder\" data-toc-modified-id=\"James-Stein-Encoder-1.2.8\"><span class=\"toc-item-num\">1.2.8&nbsp;&nbsp;</span>James-Stein Encoder</a></span></li><li><span><a href=\"#Weight-of-Evidence-Encoder\" data-toc-modified-id=\"Weight-of-Evidence-Encoder-1.2.9\"><span class=\"toc-item-num\">1.2.9&nbsp;&nbsp;</span>Weight of Evidence Encoder</a></span></li><li><span><a href=\"#Leave-One-Out-Encoder\" data-toc-modified-id=\"Leave-One-Out-Encoder-1.2.10\"><span class=\"toc-item-num\">1.2.10&nbsp;&nbsp;</span>Leave One Out Encoder</a></span></li><li><span><a href=\"#Catboost-Encoder\" data-toc-modified-id=\"Catboost-Encoder-1.2.11\"><span class=\"toc-item-num\">1.2.11&nbsp;&nbsp;</span>Catboost Encoder</a></span></li></ul></li><li><span><a href=\"#Time-Series-Variables\" data-toc-modified-id=\"Time-Series-Variables-1.3\"><span class=\"toc-item-num\">1.3&nbsp;&nbsp;</span>Time Series Variables</a></span><ul class=\"toc-item\"><li><span><a href=\"#Time-Series-Categorical-Features\" data-toc-modified-id=\"Time-Series-Categorical-Features-1.3.1\"><span class=\"toc-item-num\">1.3.1&nbsp;&nbsp;</span>Time Series Categorical Features</a></span></li><li><span><a href=\"#Time-Series-Continuous-Features\" data-toc-modified-id=\"Time-Series-Continuous-Features-1.3.2\"><span class=\"toc-item-num\">1.3.2&nbsp;&nbsp;</span>Time Series Continuous Features</a></span></li><li><span><a href=\"#Implementation\" data-toc-modified-id=\"Implementation-1.3.3\"><span class=\"toc-item-num\">1.3.3&nbsp;&nbsp;</span>Implementation</a></span><ul class=\"toc-item\"><li><span><a href=\"#Create-EntitySet\" data-toc-modified-id=\"Create-EntitySet-1.3.3.1\"><span class=\"toc-item-num\">1.3.3.1&nbsp;&nbsp;</span>Create EntitySet</a></span></li><li><span><a href=\"#Set-up-cut-time\" data-toc-modified-id=\"Set-up-cut-time-1.3.3.2\"><span class=\"toc-item-num\">1.3.3.2&nbsp;&nbsp;</span>Set up cut-time</a></span></li><li><span><a href=\"#Auto-Feature-Engineering\" data-toc-modified-id=\"Auto-Feature-Engineering-1.3.3.3\"><span class=\"toc-item-num\">1.3.3.3&nbsp;&nbsp;</span>Auto Feature Engineering</a></span></li></ul></li></ul></li></ul></li></ul></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Data Prepocessing"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Static Continuous Variables"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Discretization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Discretizing the continuous variables might make the model more robust. For example, when predicting the purchasing behavior of customers, a customer making 30 previous purchases might have very similar behavior with a customer making 32 previous purchases. Sometimes the over-precision in the feature might be noise, and that's why in LightGBM, the model adopts a histogram algorithm to prevent over-fit.  \n",
    "\n",
    "There are two ways to discretize the continuous variables.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Binarization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Convert numeric features into binary responses"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:34:58.506414Z",
     "start_time": "2020-02-29T21:34:58.069729Z"
    }
   },
   "outputs": [],
   "source": [
    "# load the sample data\n",
    "from sklearn.datasets import fetch_california_housing\n",
    "dataset = fetch_california_housing()\n",
    "X, y = dataset.data, dataset.target # we will take the first column as the example later"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:34:59.142720Z",
     "start_time": "2020-02-29T21:34:58.508089Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "sns.distplot(X[:,0], hist = True, kde=True)\n",
    "ax.set_title('Histogram', fontsize=12)\n",
    "ax.set_xlabel('Value', fontsize=12)\n",
    "ax.set_ylabel('Frequency', fontsize=12); # this feature has long-tail distribution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:34:59.148195Z",
     "start_time": "2020-02-29T21:34:59.144525Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import Binarizer\n",
    "\n",
    "sample_columns = X[0:10,0] # select the top 10 samples\n",
    "# return array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "\n",
    "model = Binarizer(threshold=6) # set 6 to be the threshold\n",
    "# if value <= 6, then return 0 else return 1\n",
    "result = model.fit_transform(sample_columns.reshape(-1,1)).reshape(-1)\n",
    "# return array([1., 1., 1., 0., 0., 0., 0., 0., 0., 0.])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Binning"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Map numeric features into bins"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Uniform Binning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:34:59.156162Z",
     "start_time": "2020-02-29T21:34:59.150333Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import KBinsDiscretizer\n",
    "\n",
    "# in order to mimic the operation in real-world, we shall fit the KBinsDiscretizer\n",
    "# on the trainset and transform the testset\n",
    "# we take the top ten samples in the first column as test set\n",
    "# take the rest samples in the first column as train set\n",
    "\n",
    "test_set = X[0:10,0]\n",
    "# return array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "train_set = X[10:,0]\n",
    "\n",
    "model = KBinsDiscretizer(n_bins=5, encode='ordinal', strategy='uniform') # set 5 bins\n",
    "# return oridinal bin number, set all bins to have identical widths\n",
    "\n",
    "model.fit(train_set.reshape(-1,1))\n",
    "transformed_train = model.transform(train_set.reshape(-1,1)).reshape(-1)  # transform train set\n",
    "transformed_test = model.transform(test_set.reshape(-1,1)).reshape(-1) # transform test set\n",
    "# take transformed_test as demo: \n",
    "# transformed_test = array([2., 2., 2., 1., 1., 1., 1., 0., 0., 1.])\n",
    "bin_edge = model.bin_edges_[0]\n",
    "# return array([ 0.4999 ,  3.39994,  6.29998,  9.20002, 12.10006, 15.0001 ]), the bin edges"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:34:59.447442Z",
     "start_time": "2020-02-29T21:34:59.157978Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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ww088MADfOMb3wB84xbeeecdAB588EHi4uJ46623+OlPf8qqVavYvHkzWVlZTJkyhdtuu43s7OyT4lmxYgWqSmlpKU899VS/MX/44Yds376d/Px8lixZwrvvvsvSpUtPOu7222/nRz/6EQBz5szhiSee4Ac/+AFLly7ljjvu4IUXXuChhx4CfNVzzz77LB9++CEej4cFCxawcOFCAG655RYefPBBpk2bxoYNG7j11lt5/fXXueuuu1i7di3jx4+nsbFx8L+EU7DEMQr0V/0EcP25E0MciTE+p+rVE7j/qquuAmDhwoWUlZWd9nq7d++mqKiI6dOnA3DjjTdy//33H08cn/3sZ084fuXKlQDMnTuXOXPmMG7cOAAmT55MZWVlv4mjt6pq//79XHTRRSxfvvx4aaPXokWLKCgoAKC4uJiysrJ+E0d/VVVvvfUWzz33HACXX3456em+Us0777zDqlWrSExMBODKK68EoKWlhffee49rrrnm+DV6S1lLlizhpptu4jOf+czxf8fhZInDGDOkksFgZGdnc/To0RP2NTQ0nDAgLT4+HgC3243H4znt9c5UJZScnHzCdu+1XS7X8ee922e615QpUxgzZgw7duxg0aJF/V53oHH31V9CPdV783q9ZGRk9NvG8+CDD7JhwwZeeOEFiouL2bJlS7/JcLCsjcPg9Srf/f02zv+317jr+e3cs3YXtc2ROQ2FiQwpKSmMGzeO1157DfAljT/+8Y/9fjsfiJkzZ1JWVsa+ffsAeOyxx7jggguGLd5AtbW1HDhwgEmTJg3rdZctW8YTTzwBwEsvvcSxY77EunTpUv7v//6Pjo4OWlpaeOGFFwBIS0ujqKiIp59+GvAlmI8++gjwtX2ce+653HXXXeTk5FBZWTmssVriMNz78m4eX1/B3PHpzJ+YSafHy283VtLd43U6NBPFHn30UX70ox9RXFzMhRdeyJ133smUKVMGda2EhAR++ctfcs011zB37lxcLhdf+cpXhjXeFStWUFxczIoVK7j77rsZM2bMoK91++23H++OW1xcTFdXF3feeSdvvfUWCxYs4OWXXyY/31eVfM4557By5UrmzZvHVVddRUlJCenp6QA88cQT/OIXv2DevHnMmTPneDfh22+/nblz53LWWWexbNky5s2bN/R/gABRueZ4SUmJ2kJOf3a6No6nNlXyzWe2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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualiza the bin edges\n",
    "fig, ax = plt.subplots()\n",
    "sns.distplot(train_set, hist = True, kde=True)\n",
    "\n",
    "for edge in bin_edge: # uniform bins\n",
    "    line = plt.axvline(edge, color='b')\n",
    "ax.legend([line], ['Uniform Bin Edges'], fontsize=10)\n",
    "ax.set_title('Histogram', fontsize=12)\n",
    "ax.set_xlabel('Value', fontsize=12)\n",
    "ax.set_ylabel('Frequency', fontsize=12); "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-05T04:05:57.799444Z",
     "start_time": "2020-01-05T04:05:57.793970Z"
    }
   },
   "source": [
    "##### Quantile Binning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:34:59.456594Z",
     "start_time": "2020-02-29T21:34:59.449230Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import KBinsDiscretizer\n",
    "\n",
    "# in order to mimic the operation in real-world, we shall fit the KBinsDiscretizer\n",
    "# on the trainset and transform the testset\n",
    "# we take the top ten samples in the first column as test set\n",
    "# take the rest samples in the first column as train set\n",
    "\n",
    "test_set = X[0:10,0]\n",
    "# return array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "train_set = X[10:,0]\n",
    "\n",
    "model = KBinsDiscretizer(n_bins=5, encode='ordinal', strategy='quantile') # set 3 bins\n",
    "# return oridinal bin number, set all bins based on quantile\n",
    "\n",
    "model.fit(train_set.reshape(-1,1))\n",
    "transformed_train = model.transform(train_set.reshape(-1,1)).reshape(-1)  # transform train set\n",
    "transformed_test = model.transform(test_set.reshape(-1,1)).reshape(-1) # transform test set\n",
    "# take transformed_test as demo\n",
    "# transformed_test = array([4., 4., 4., 4., 2., 3., 2., 1., 0., 2.])\n",
    "bin_edge = model.bin_edges_[0]\n",
    "# return array([ 0.4999 ,  2.3523 ,  3.1406 ,  3.9667 ,  5.10824, 15.0001 ]), the bin edges\n",
    "# 2.3523 is the 20% quantile\n",
    "# 3.1406 is the 40% quantile, etc.."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:34:59.751463Z",
     "start_time": "2020-02-29T21:34:59.458220Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualiza the bin edges\n",
    "fig, ax = plt.subplots()\n",
    "sns.distplot(train_set, hist = True, kde=True)\n",
    "\n",
    "for edge in bin_edge: # quantile based bins\n",
    "    line = plt.axvline(edge, color='b')\n",
    "ax.legend([line], ['Quantiles Bin Edges'], fontsize=10)\n",
    "ax.set_title('Histogram', fontsize=12)\n",
    "ax.set_xlabel('Value', fontsize=12)\n",
    "ax.set_ylabel('Frequency', fontsize=12); "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Scaling"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "cell_style": "center"
   },
   "source": [
    "Different scales in features make it hard to compare features especially in linear models such as linear regression & logistic regression. In k-means clustering with Euclidean distance or KNN model, feature scaling is required or the distance measure becomes useless. For any algorithms using Gradient Descent, scaling will also speed up converging speed."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "cell_style": "center"
   },
   "source": [
    "**Some commonly used models**\n",
    "  \n",
    "|Algorithm Name | Need Scaling |\n",
    "|--|--|\n",
    "| SVM, KNN, PCA, K-Means, Linear Regression, Logistic Regression, Linear Discriminant Analysis| $\\checkmark$ |\n",
    "| Naive Bayes, Tree-Based models | $\\times$ |\n",
    "\n",
    "* Skewness affect PCA models, so it might be better to use Power Transformation to remove skewness"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Stardard Scaling (Z-score standardization)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-05T17:59:35.668652Z",
     "start_time": "2020-01-05T17:59:35.663440Z"
    }
   },
   "source": [
    "Formula: ${X}' = \\frac{X - \\mu }{\\sigma}$  \n",
    "Where $\\mu$ is the mean of X and $\\sigma$ is the standard deviation  \n",
    "This method is very sensitive to outliers because outliers affect both $\\mu$ and $\\sigma$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:34:59.759535Z",
     "start_time": "2020-02-29T21:34:59.754156Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# in order to mimic the operation in real-world, we shall fit the StandardScaler\n",
    "# on the trainset and transform the testset\n",
    "# we take the top ten samples in the first column as test set\n",
    "# take the rest samples in the first column as train set\n",
    "\n",
    "test_set = X[0:10,0]\n",
    "# return array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "train_set = X[10:,0]\n",
    "\n",
    "model = StandardScaler()\n",
    "\n",
    "model.fit(train_set.reshape(-1,1)) # fit on the train set and transform the test set\n",
    "transformed_train = model.transform(train_set.reshape(-1,1)).reshape(-1)  # transform train set\n",
    "transformed_test = model.transform(test_set.reshape(-1,1)).reshape(-1) # transform test set\n",
    "# take transformed_test as demo:\n",
    "# transformed_test =  array([ 2.34539745,  2.33286782,  1.78324852,  0.93339178, -0.0125957 ,\n",
    "# 0.08774668, -0.11109548, -0.39490751, -0.94221041, -0.09419626])\n",
    "# result is the same as ((X[0:10,0] - X[10:,0].mean())/X[10:,0].std())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:00.295892Z",
     "start_time": "2020-02-29T21:34:59.761685Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 936x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize the distribution after the scaling\n",
    "# fit and transform the entire first feature\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots(2,1, figsize = (13,9))\n",
    "sns.distplot(X[:,0], hist = True, kde=True, ax=ax[0])\n",
    "ax[0].set_title('Histogram of the Original Distribution', fontsize=12)\n",
    "ax[0].set_xlabel('Value', fontsize=12)\n",
    "ax[0].set_ylabel('Frequency', fontsize=12); # this feature has long-tail distribution\n",
    "\n",
    "model = StandardScaler()\n",
    "model.fit(X[:,0].reshape(-1,1)) \n",
    "result = model.transform(X[:,0].reshape(-1,1)).reshape(-1)\n",
    "\n",
    "# show the distribution of the entire feature\n",
    "sns.distplot(result, hist = True, kde=True, ax=ax[1])\n",
    "ax[1].set_title('Histogram of the Transformed Distribution', fontsize=12)\n",
    "ax[1].set_xlabel('Value', fontsize=12)\n",
    "ax[1].set_ylabel('Frequency', fontsize=12); # the distribution is the same, but scales change\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### MinMaxScaler (Scale to range)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose we want to rescale the feature to range (a,b)  \n",
    "Formula: ${X}' = \\frac{X - Min }{Max - Min} * (b - a) + a$  \n",
    "Where $Min$ is the minimun of X and $Max$ is the maximun of X  \n",
    "This method is also very sensitive to outliers because outliers affect both $Min$ and $Max$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:00.304074Z",
     "start_time": "2020-02-29T21:35:00.297797Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import MinMaxScaler\n",
    "\n",
    "# in order to mimic the operation in real-world, we shall fit the MinMaxScaler\n",
    "# on the trainset and transform the testset\n",
    "# we take the top ten samples in the first column as test set\n",
    "# take the rest samples in the first column as train set\n",
    "\n",
    "test_set = X[0:10,0]\n",
    "# return array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "train_set = X[10:,0]\n",
    "\n",
    "model = MinMaxScaler(feature_range=(0,1)) # set the range to be (0,1)\n",
    "\n",
    "model.fit(train_set.reshape(-1,1)) # fit on the train set and transform the test set\n",
    "transformed_train = model.transform(train_set.reshape(-1,1)).reshape(-1)  # transform train set\n",
    "transformed_test = model.transform(test_set.reshape(-1,1)).reshape(-1) # transform test set\n",
    "# take transformed_test as demo:\n",
    "# transformed_test =  array([0.53966842, 0.53802706, 0.46602805, 0.35469856, 0.23077613,\n",
    "# 0.24392077, 0.21787286, 0.18069406, 0.1089985 , 0.22008662])\n",
    "# result is the same as (X[0:10,0] - X[10:,0].min())/(X[10:,0].max()-X[10:,0].min())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:00.908262Z",
     "start_time": "2020-02-29T21:35:00.305563Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 936x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize the distribution after the scaling\n",
    "# fit and transform the entire first feature\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots(2,1, figsize = (13,9))\n",
    "sns.distplot(X[:,0], hist = True, kde=True, ax=ax[0])\n",
    "ax[0].set_title('Histogram of the Original Distribution', fontsize=12)\n",
    "ax[0].set_xlabel('Value', fontsize=12)\n",
    "ax[0].set_ylabel('Frequency', fontsize=12); # this feature has long-tail distribution\n",
    "\n",
    "model = MinMaxScaler(feature_range=(0,1))\n",
    "model.fit(X[:,0].reshape(-1,1)) \n",
    "result = model.transform(X[:,0].reshape(-1,1)).reshape(-1)\n",
    "\n",
    "# show the distribution of the entire feature\n",
    "sns.distplot(result, hist = True, kde=True, ax=ax[1])\n",
    "ax[1].set_title('Histogram of the Transformed Distribution', fontsize=12)\n",
    "ax[1].set_xlabel('Value', fontsize=12)\n",
    "ax[1].set_ylabel('Frequency', fontsize=12); # the distribution is the same, but scales change\n",
    "fig.tight_layout() # now the scale change to [0,1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### RobustScaler (Anti-outliers scaling)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Scale features using statistics (quantiles) that are robust to outliers  \n",
    "Suppose we want to scale the feature to quantile range (a, b)  \n",
    "Formula: ${X}' = \\frac{X - Median}{X.quantile(b) - X.quantile(a)}$  \n",
    "This method is more robust to outliers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:00.916065Z",
     "start_time": "2020-02-29T21:35:00.910013Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.preprocessing import RobustScaler\n",
    "\n",
    "# in order to mimic the operation in real-world, we shall fit the RobustScaler\n",
    "# on the trainset and transform the testset\n",
    "# we take the top ten samples in the first column as test set\n",
    "# take the rest samples in the first column as train set\n",
    "\n",
    "test_set = X[0:10,0]\n",
    "# return array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "train_set = X[10:,0]\n",
    "\n",
    "model = RobustScaler(with_centering = True, with_scaling = True, \n",
    "                    quantile_range = (25.0, 75.0))\n",
    "# with_centering = True => recenter the feature by set X' = X - X.median()\n",
    "# with_scaling = True => rescale the feature by the quantile set by user\n",
    "# set the quantile to the (25%, 75%)\n",
    "\n",
    "model.fit(train_set.reshape(-1,1)) # fit on the train set and transform the test set\n",
    "transformed_train = model.transform(train_set.reshape(-1,1)).reshape(-1)  # transform train set\n",
    "transformed_test = model.transform(test_set.reshape(-1,1)).reshape(-1) # transform test set\n",
    "# take transformed_test as demo:\n",
    "# transformed_test = array([ 2.19755974,  2.18664281,  1.7077657 ,  0.96729508,  0.14306683,\n",
    "# 0.23049401,  0.05724508, -0.19003715, -0.66689601,  0.07196918])\n",
    "# result is the same as (X[0:10,0] - np.quantile(X[10:,0], 0.5))/(np.quantile(X[10:,0],0.75)-np.quantile(X[10:,0], 0.25))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:01.436553Z",
     "start_time": "2020-02-29T21:35:00.917464Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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l/XUBVdEREREREQGhApQERERERERGRCRF6BmdomZrTKztWb2mQOs8y4ze8XMVpjZPQOdUURERERERI5epGNAzSwO3ApcBGwBnjezhe7+Sso6M4DPAme6+24zGxlNWhERERERETkaUbeAzgfWuvt6d28H7iO4CHqqDwG3uvtuAHevHuCMIiIiIiIikgZRF6DjgMqU6S3hvFQzgZlm9ncze9bMLultR2b2YTNbbGaLa2pq+imuiIiIiIiIHKmoC1DrZZ73mE4AM4DzgGuA282s7HUbud/m7nPdfW5FxSEvPyMiIiIiIiIDLOoCdAswIWV6PLCtl3V+6+4d7r4BWEVQkIqIiIiIiMggEnUB+jwww8ymmFkOcDWwsMc6DwLnA5jZCIIuuesHNKWIiIiIiIgctUgLUHfvBG4EHgFeBe539xVm9mUzuyxc7RGg1sxeAR4H/sXda6NJLCIiIiIiIkfK3HsOuRz85s6d64sXL446hkjGu2fR5iPe9toFE9OYREREREQGMzNb4u5zD7Ve1F1wRUREREREJEuoABUREREREZEBoQJUREREREREBkQi6gAi8pojHZOp8ZgiIiIiMhioBVREREREREQGhFpARbJMc3sn9S2ddHR1U93QSle377uNKskjLxmPOqKIiIiIDFEqQEWyxJ7mdm59fC13Pr2J9q7uXtcpzE1w6QljOHF8KWY2wAlFREREZKhTASoyxLV2dHHn0xu59fG1NLR1cuUp4zll4jByEjGe37CLeMxIxIxud55YXcMvF1fywubdXHbSWIYX5UYdX0RERESGEBWgIkNUV7fz4Itb+e8/rWJbXSvnz6rgX990DMeMLtm3Tnvn/i2hx4wpYdH6Wv70ShXf/csa3nDMSM6aMYJETMPFRUREROToqQAVGWLcnb+uruGWh1eyckcDJ44v5b/fdTKnTxt+yG1jZpw+bQSzx5byh5e28adXqlhauYe3nzKeieUFA5BeRERERIYyFaAiQ8jLW+v4+sOv8ve1tUwsL+D718zhLSeMIRY7vPGcpflJrl0wiZXb61m4bBs/fnI918ybwOyxpf2UXERERESygQpQkSGgclcz3/zTKn67dBvlhTl88a2zefeCSeQkjq7r7DFjSpg4vIA7n97I3Ys28/ZTxnHqpPI0pRYRERGRbKMCVGQQq2/p4Mk1NXxp4QpiMfjE+dP4yLnT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H/E6kwxpHvB+4LLk36rlydYaSU9jgIVm9gaJC3NPOed0aw+R1KgAFpnZ68CrwGPOucc9ziTHyNTrVERERERERIbDaG8BFRERERERkWGiAlRERERERESGhQpQERERERERGRYqQEVERERERGRYqAAVERERERGRYaECVEREJA2Y2UQzc2YW8DqLiIjIyaICVEREJEXM7Akzu/0Q2xeY2U4VlyIiMtqpABUREUmde4D3m5kdsP39wH3OuejwRxIREUkfKkBFRERS509AMXDhng1mVgRcC/zazN5uZsvMrN3MtprZ14d6ITPbZGZXDFr/upndO2j9XDN70cx2m9nrZnbJyfiGREREUkkFqIiISIo453qAB4FbB21+N7DaOfc60JXcVwi8Hfikmb3zWN/HzKqAx4D/IFHw/i/gj2ZWdmLfgYiIyMmlAlRERCS1fgXcaGbZyfVbk9twzj3nnHvTORd3zr0B/Ba4+Dje433AX5xzf0m+1lPAEuCaFOQXERE5aVSAioiIpJBzbhHQBCwws0nA2cD9AGZ2jpktNLMmM2sDPgGUHsfbTCBR5O7e8wAuAMak5rsQERE5OTQbn4iISOr9mkTL51TgSedcQ3L7/cAdwNXOuV4z+x5DF6BdQM6g9cpBy1uB3zjnPpba2CIiIieXWkBFRERS79fAFcDHSHa/TYoAu5LF51zglsO8xnLgZjMLmtkc4IZB++4F3mFmV5mZ38yyzOwSM6tO8fchIiKSUipARUREUsw5twl4EcgFHhm061PA7WbWAfwfEhMWDeVrwGSgFfgGyW68ydffCiwAvkKiu+9W4Ivo77qIiKQ5c855nUFERERERERGAV0pFRERERERkWGhAlRERERERESGhYsCwJsAAABDSURBVApQERERERERGRYqQEVERERERGRYqAAVERERERGRYaECVERERERERIaFClAREREREREZFipARUREREREZFj8f0bIw4F0AjV2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 936x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize the distribution after the scaling\n",
    "# fit and transform the entire first feature\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots(2,1, figsize = (13,9))\n",
    "sns.distplot(X[:,0], hist = True, kde=True, ax=ax[0])\n",
    "ax[0].set_title('Histogram of the Original Distribution', fontsize=12)\n",
    "ax[0].set_xlabel('Value', fontsize=12)\n",
    "ax[0].set_ylabel('Frequency', fontsize=12); # this feature has long-tail distribution\n",
    "\n",
    "model = RobustScaler(with_centering = True, with_scaling = True, \n",
    "                    quantile_range = (25.0, 75.0))\n",
    "model.fit(X[:,0].reshape(-1,1)) \n",
    "result = model.transform(X[:,0].reshape(-1,1)).reshape(-1)\n",
    "\n",
    "# show the distribution of the entire feature\n",
    "sns.distplot(result, hist = True, kde=True, ax=ax[1])\n",
    "ax[1].set_title('Histogram of the Transformed Distribution', fontsize=12)\n",
    "ax[1].set_xlabel('Value', fontsize=12)\n",
    "ax[1].set_ylabel('Frequency', fontsize=12); # the distribution is the same, but scales change\n",
    "fig.tight_layout() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Power Transform (Non-linear transformation)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "All the above scaling methods keep the original distribution. But normality is an important assumption for many statistical models. We can use Power Transform to convert the original distribution into a normal distribution. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Box-Cox transformation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Box-Cox transformation only works for positive numbers and assumes the below distribution:  \n",
    "$x_i(\\lambda) = \\left\\{\\begin{matrix}\n",
    " \\frac{x_i^\\lambda - 1}{\\lambda}& if \\lambda \\neq 0\\\\ \n",
    " log(\\lambda)& if \\lambda =  0\n",
    "\\end{matrix}\\right.$  \n",
    "All values of λ are considered and the optimal value which stabilize variance and mimimize skewness will be selected through MLE. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:01.459968Z",
     "start_time": "2020-02-29T21:35:01.438197Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import PowerTransformer\n",
    "\n",
    "# in order to mimic the operation in real-world, we shall fit the PowerTransformer\n",
    "# on the trainset and transform the testset\n",
    "# we take the top ten samples in the first column as test set\n",
    "# take the rest samples in the first column as train set\n",
    "\n",
    "test_set = X[0:10,0]\n",
    "# return array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "train_set = X[10:,0]\n",
    "\n",
    "model = PowerTransformer(method='box-cox', standardize=True)\n",
    "# apply box-cox transformation\n",
    "\n",
    "model.fit(train_set.reshape(-1,1)) # fit on the train set and transform the test set\n",
    "transformed_train = model.transform(train_set.reshape(-1,1)).reshape(-1)  # transform train set\n",
    "transformed_test = model.transform(test_set.reshape(-1,1)).reshape(-1) # transform test set\n",
    "# take transformed_test as demo:\n",
    "# transformed_test =  array([ 1.91669292,  1.91009687,  1.60235867,  1.0363095 ,  0.19831579,\n",
    "# 0.30244247,  0.09143411, -0.24694006, -1.08558469,  0.11011933])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:02.038785Z",
     "start_time": "2020-02-29T21:35:01.461859Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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iIiIiIiIpAQzW7c/+6kLroiIiIiIiCSEClARERERERFJCBWgIiIiIiIikhAqQEVERERERCQhVICKiIiIiIhIQqgAFRERERERkYRQASoiIiIiIiIJoQJUREREREREEkIFqIiIiIiIiCSEClARERERERFJiIywA4iIiEh47pm7/qAed9ns4XFOIiIiqUAtoCIiIiIiIpIQKkBFREREREQkIVSAioiIiIiISEKoABUREREREZGEUAEqIiIiIiIiCaECVERERERERBJCBaiIiIiIiIgkhK4DKiIikkR0XU4REenL1AIqIiIiIiIiCaECVERERERERBJCBaiIiIiIiIgkhApQERERERERSQgVoCIiIiIiIpIQmgVXREREdom409jWRVd3BAAze9v23Mx0crPSw4gmIiJ9gApQERGRFNPW2c3qmiZW1TTy9BvV1LV0sqOlg7qWTupbOul23+vj87LSeWhhFaPKChhVlsfIsnwmDS5i9ICCBL0CERHprVSAioiI9FEtHV2s395C5bZmVmxpYkV1A29saaRyWzORmBqzMCeDktxMhvbLZUpFMSV5mWRnpLFrF3/rpqWji21N7aSnGf9ZvY0/vdK26ziTK4o4f/oQzp1ewaCinES9TBER6UVCL0DN7Ezg50A6cKu7/2AP+10IPAjMdPcFCYwoIiKStDq7I2xrauexxZtYU9NE1fYW1m1vYV1tC9ua2nftZwbDS/OYMKiQs6cOZkJ5EeMHFfDimloy0w98SojLZg8HogVp5bYWXl5by58XbeR7f13OjX9bzvFjyjhvegVnTimnMCczbq9XRER6t1ALUDNLB24GTgc2APPN7DF3f73HfoXAZ4C5iU8pIiKSHNyd1VubWFPTRE1jOzWN7exo7tjVUmkGg4tyGN4/j1MmDmBE/3yGl+Yxon8eYwcWkJf1zl/78yt3HFKmvKwMJlUUMamiiI+eMIo1W5v486sbeXTRJr740BK+9dgyvn72JC6eOewd40lFRCT1hN0COgtY7e5rAczsPuA84PUe+30X+BHwhcTGExERCV9nd4TFVXW8sHobNY3R7q9lBVlUlOQyfVgJAwuzuer4kYzsn09OZrgTBI0ZUMDnz5jA504fzyvr6/jx31fwlYeX8q8VNfzggiPpl58Vaj4REQlX2AXoEKAqZnkDMDt2BzM7Chjm7k+Y2R4LUDO7FrgW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\n",
      "text/plain": [
       "<Figure size 936x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize the distribution after the scaling\n",
    "# fit and transform the entire first feature\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots(2,1, figsize = (13,9))\n",
    "sns.distplot(X[:,0], hist = True, kde=True, ax=ax[0])\n",
    "ax[0].set_title('Histogram of the Original Distribution', fontsize=12)\n",
    "ax[0].set_xlabel('Value', fontsize=12)\n",
    "ax[0].set_ylabel('Frequency', fontsize=12); # this feature has long-tail distribution\n",
    "\n",
    "model = PowerTransformer(method='box-cox', standardize=True)\n",
    "model.fit(X[:,0].reshape(-1,1)) \n",
    "result = model.transform(X[:,0].reshape(-1,1)).reshape(-1)\n",
    "\n",
    "# show the distribution of the entire feature\n",
    "sns.distplot(result, hist = True, kde=True, ax=ax[1])\n",
    "ax[1].set_title('Histogram of the Transformed Distribution', fontsize=12)\n",
    "ax[1].set_xlabel('Value', fontsize=12)\n",
    "ax[1].set_ylabel('Frequency', fontsize=12); # the distribution now becomes normal\n",
    "fig.tight_layout() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Yeo-Johnson  transformation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Yeo-Johnson transformation works for both positive & negative numbers and assumes the below distribution:  \n",
    "$x_i(\\lambda) = \\left\\{\\begin{matrix}\n",
    "\\frac{[(x_i + 1)^{\\lambda} -1]}{\\lambda} & if \\, \\, \\lambda\\neq 0, x_i \\geq  0 \\\\ \n",
    "ln(x_i + 1) & if \\, \\, \\lambda =  0, x_i \\geq  0\\\\ \n",
    "-\\frac{[(-x_i + 1)^{2- \\lambda} -1]}{2-\\lambda} & if \\, \\, \\lambda\\neq 2, x_i <  0 \\\\ \n",
    "-ln(-x_i + 1) & if \\, \\, \\lambda =  2, x_i <  0\\\\ \n",
    "\\end{matrix}\\right.$  \n",
    "All values of λ are considered and the optimal value which stabilize variance and mimimize skewness will be selected through MLE. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:02.064005Z",
     "start_time": "2020-02-29T21:35:02.040607Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import PowerTransformer\n",
    "\n",
    "# in order to mimic the operation in real-world, we shall fit the PowerTransformer\n",
    "# on the trainset and transform the testset\n",
    "# we take the top ten samples in the first column as test set\n",
    "# take the rest samples in the first column as train set\n",
    "\n",
    "test_set = X[0:10,0]\n",
    "# return array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "train_set = X[10:,0]\n",
    "\n",
    "model = PowerTransformer(method='yeo-johnson', standardize=True)\n",
    "# apply yeo-johnson transformation\n",
    "\n",
    "model.fit(train_set.reshape(-1,1)) # fit on the train set and transform the test set\n",
    "transformed_train = model.transform(train_set.reshape(-1,1)).reshape(-1)  # transform train set\n",
    "transformed_test = model.transform(test_set.reshape(-1,1)).reshape(-1) # transform test set\n",
    "# take transformed_test as demo:\n",
    "# transformed_test = array([ 1.90367888,  1.89747091,  1.604735  ,  1.05166306,  0.20617221,\n",
    "# 0.31245176,  0.09685566, -0.25011726, -1.10512438,  0.11598074])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:02.656717Z",
     "start_time": "2020-02-29T21:35:02.065459Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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maUCfwbuOKAXlcQB51wEmNQ5XsT/mdl455zure4lVIAeI+fc+Ydab2YTgKHACjODWLfBpWY2zTm3owcj9nuHO0aHMBd4HhWgPe5ox8jMPgdcCnzcaZJizxzH75LEj0qguMtyEbDNoywivZqZBYkVn4865/7idR45POdcnZm9QezeahWgvYS64J4k59wq51y+c26Ic24IsZOAM1R8xhczG9ll8XJgjVdZ5NDM7ELg34DLnXPNXucR6WXeA0aa2VAzCwFzgHkeZxLpdSzWmnA/8KFz7n+8ziMHM7O8vSPlm1kScD46r+tVVIBKf/FTM3vfzFYS6y6tYdXjzz1AGvDXzuly7vU6kBzMzK40s0rgY8DzZvay15kEOgfwuh14mdigKU8451Z7m0oOZGaPAe8Ao82s0sxu9jqTHORM4CZgduf/RcvN7GKvQ8l+BgKvd57TvUfsHtDnPM4kx8HUy01ERERERER6glpARUREREREpEeoABUREREREZEeoQJUREREREREeoQKUBEREREREekRKkBFRERERESkR6gAFRERiQNmNsTMnJkFvM4iIiJyqqgAFRER6SZm9rKZ/egQ668wsx0qLkVEpL9TASoiItJ9/gDcZGZ2wPqbgEedc+GejyQiIhI/VICKiIh0n6eBbODsvSvMLAu4FHjIzC4xs2VmVm9mFWb2g8N9kJltMbPzuyz/wMwe6bI8w8wWmFmdma0ws1mn4guJiIh0JxWgIiIi3cQ51wI8AXy2y+prgTXOuRVAU+e2TOAS4FYz+9Tx/hwzKwSeB/6TWMH7deDPZpZ3ct9ARETk1FIBKiIi0r3+CFxjZkmdy5/tXIdz7g3n3CrnXNQ5txJ4DDj3BH7GjcALzu62cbkAAAFmSURBVLkXOj/rr8Bi4OJuyC8iInLKqAAVERHpRs65t4Fq4AozGwZMBeYCmNl0M3vdzKrNbA/wj0DuCfyYwcSK3Lq9D+AsYGD3fAsREZFTQ6PxiYiIdL+HiLV8jgZecc5Vda6fC9wDXOScazWzX3D4ArQJSO6yPKDL6wrgYefcLd0bW0RE5NRSC6iIiEj3ewg4H7iFzu63ndKA3Z3F5zTghiN8xnJgjpkFzawUuLrLtkeAy8zsk2bmN7NEM5tlZkXd/D1ERES6lQpQERGRbuac2wIsAFKAeV02/RPwIzNrAL5HbMCiw/kuMByoBX5IZzfezs+vAK4Avk2su28F8A30/7qIiMQ5c855nUFERERERET6AV0pFRERERERkR6hAlRERERERER6hApQERERERER6REqQEVERERERKRHqAAVERERERGRHqECVERERERERHqEClARERERERHpESpARUREREREpEf8fwe+DydJ3zO9AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 936x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize the distribution after the scaling\n",
    "# fit and transform the entire first feature\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots(2,1, figsize = (13,9))\n",
    "sns.distplot(X[:,0], hist = True, kde=True, ax=ax[0])\n",
    "ax[0].set_title('Histogram of the Original Distribution', fontsize=12)\n",
    "ax[0].set_xlabel('Value', fontsize=12)\n",
    "ax[0].set_ylabel('Frequency', fontsize=12); # this feature has long-tail distribution\n",
    "\n",
    "model = PowerTransformer(method='yeo-johnson', standardize=True)\n",
    "model.fit(X[:,0].reshape(-1,1)) \n",
    "result = model.transform(X[:,0].reshape(-1,1)).reshape(-1)\n",
    "\n",
    "# show the distribution of the entire feature\n",
    "sns.distplot(result, hist = True, kde=True, ax=ax[1])\n",
    "ax[1].set_title('Histogram of the Transformed Distribution', fontsize=12)\n",
    "ax[1].set_xlabel('Value', fontsize=12)\n",
    "ax[1].set_ylabel('Frequency', fontsize=12); # the distribution now becomes normal\n",
    "fig.tight_layout() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Normalization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "All the above scaling methods are column-wise operations. But normalization works on each row, it tries to \"scale\" each sample to have unit norm. Since normalization works on each row, it will distort the relationships between features so it is not commonly seen. But normalization method is quite useful in text classification and clustering contexts."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose X[i][j] represent the value of feature j in sample i.  \n",
    "Formula for L1 Norm: $X[i][j] = \\frac{X[i][j]}{\\sum_{j=1|X[i][j]|}}$  \n",
    "Formula for L2 Norm: $X[i][j] = \\frac{X[i][j]}{\\sqrt{\\sum_{j=1}X[i][j]^2}}$  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "cell_style": "center"
   },
   "source": [
    "##### L1 Normalization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:02.663187Z",
     "start_time": "2020-02-29T21:35:02.658696Z"
    },
    "cell_style": "center"
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import Normalizer\n",
    "\n",
    "# Normalizer performs operation on each row independently\n",
    "# So train set and test set are processed independently\n",
    "\n",
    "###### for L1 Norm\n",
    "sample_columns = X[0:2,0:3] # select the first two samples, and the first three features\n",
    "# return array([[ 8.3252, 41., 6.98412698],\n",
    "# [ 8.3014 , 21.,  6.23813708]])\n",
    "\n",
    "model = Normalizer(norm='l1')\n",
    "# use L1 Norm to normalize each samples\n",
    "\n",
    "model.fit(sample_columns) \n",
    "\n",
    "result = model.transform(sample_columns) # test set are processed similarly\n",
    "# return array([[0.14784762, 0.72812094, 0.12403144],\n",
    "# [0.23358211, 0.59089121, 0.17552668]])\n",
    "# result = sample_columns/np.sum(np.abs(sample_columns), axis=1).reshape(-1,1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "cell_style": "center"
   },
   "source": [
    "##### L2 Normalization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:02.669051Z",
     "start_time": "2020-02-29T21:35:02.665077Z"
    },
    "cell_style": "center"
   },
   "outputs": [],
   "source": [
    "###### for L2 Norm\n",
    "sample_columns = X[0:2,0:3] # select the first three features\n",
    "# return array([[ 8.3252, 41., 6.98412698],\n",
    "# [ 8.3014 , 21.,  6.23813708]])\n",
    "\n",
    "model = Normalizer(norm='l2')\n",
    "# use L2 Norm to normalize each samples\n",
    "\n",
    "model.fit(sample_columns) \n",
    "\n",
    "result = model.transform(sample_columns) # test set are processed similarly\n",
    "# return array([[0.19627663, 0.96662445, 0.16465922],\n",
    "# [0.35435076, 0.89639892, 0.26627902]])\n",
    "# result = sample_columns/np.sqrt(np.sum(sample_columns**2, axis=1)).reshape(-1,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:03.607946Z",
     "start_time": "2020-02-29T21:35:02.670701Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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gHPuh8APD3js02Nuv6PqixIRERERETlGfN/jTfNq2dOfpSWdGBeEtqQTBH5kCld3bEyXElwREREREZFZx/c9FtQP7/lsSScAyntAG1PBFK+u8qZNBlRERERERGQ28jxj8bxavnv928gXSwR+hMZUMOMaEIECUBERERERkSnneUZzbWyql3HMqQRXREREREREqkIBqIiIiIiIiFSFAlARERERERGpCgWgIiIiIiIiUhUKQEVERERERKQqFICKiIiIiIhIVSgAFRERERERkarQHFAREREREZFpLAwd3YN58sUSgR+hMRXgeTbVy3pDFICKiIiIiIhMU2Ho2L6nn+vu3kJnT4aWdII7r2lj8bza4zIIVQmuiIiIiIjINNU9mC8HnwCdPRmuu3sL3YP5KV7ZG6MAVEREREREZJrKF0vl4HNUZ0+GfLE0RSs6OgpARUREREREpqnAj9CSTox7rCWdIPAjU7Sio6MAVEREREREZJpqTAXceU1bOQgd3QPamAqmeGVvjJoQiYiIiIiITFOeZyyeV8t3r3+buuCKiIiIiIjIseV5RnNtbKqXUREqwRUREREREZGqUAAqIiIiIiIiVaEAVERERERERKpCAaiIiIiIiIhUhQJQERERERERqQoFoCIiIiIiIlIVCkBFRERERESkKsw5N9VrOKbMrAt4aYpO3wTsm6Jzi+j6k6mk60+miq49mUq6/mQqTfX1d5JzrvlIB834AHQqmdkW51zbVK9DZiddfzKVdP3JVNG1J1NJ159MpePl+lMJroiIiIiIiFSFAlARERERERGpCgWgx9YdU70AmdV0/clU0vUnU0XXnkwlXX8ylY6L6097QEVERERERKQqlAEVERERERGRqlAAKiIiIiIiIlWhALQCzOxSM9tuZs+a2ScneD5mZveOPP9zMzu5+quUmWoS19+fmtk2M9tqZg+b2UlTsU6ZeY507Y057gozc2Y27VvDy/FjMtefmb1/5OffU2b2rWqvUWauSfzbe6KZ/djMnhz59/f3pmKdMvOY2V1mttfMfnmI583MvjxybW41s3OrvcYjUQB6lMwsAnwFeDdwFnCVmZ11wGEfBXqcc78BfAm4rbqrlJlqktffk0Cbc24JcD/whequUmaiSV57mFktcAPw8+quUGayyVx/ZnY68Cngbc65NwP/b9UXKjPSJH/+/SVwn3PuHOBK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\n",
      "text/plain": [
       "<Figure size 936x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize the difference in the distribuiton after Normalization\n",
    "# compare it with the distribuiton after RobustScaling\n",
    "# fit and transform the entire first & second feature\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# RobustScaler\n",
    "fig, ax = plt.subplots(2,1, figsize = (13,9))\n",
    "\n",
    "model = RobustScaler(with_centering = True, with_scaling = True, \n",
    "                    quantile_range = (25.0, 75.0))\n",
    "model.fit(X[:,0:2]) \n",
    "result = model.transform(X[:,0:2])\n",
    "\n",
    "sns.scatterplot(result[:,0], result[:,1], ax=ax[0])\n",
    "ax[0].set_title('Scatter Plot of RobustScaling result', fontsize=12)\n",
    "ax[0].set_xlabel('Feature 1', fontsize=12)\n",
    "ax[0].set_ylabel('Feature 2', fontsize=12);\n",
    "\n",
    "model = Normalizer(norm='l2')\n",
    "\n",
    "model.fit(X[:,0:2]) \n",
    "result = model.transform(X[:,0:2])\n",
    "\n",
    "sns.scatterplot(result[:,0], result[:,1], ax=ax[1])\n",
    "ax[1].set_title('Scatter Plot of Normalization result', fontsize=12)\n",
    "ax[1].set_xlabel('Feature 1', fontsize=12)\n",
    "ax[1].set_ylabel('Feature 2', fontsize=12);\n",
    "fig.tight_layout()  # Normalization distort the original distribution"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Imputation of missing values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In real practice, the dataset might have missing values in them. However, such datasets with sparsity are incompatible with most of the scikit-learn models which assume that all features are numerical without missing values. So before applying scikit-learn models, we need to impute the missing values.\n",
    "\n",
    "But some new models such as XGboost, LightGBM and Catboost implementing in other packages, provide support for the missing values in the dataset. So before applying these models, we are no longer required to fill the missing values in the dataset."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Univariate feature imputation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose we have missing values in the ith column, then we will impute them with a constant, or using the statistics (average, median or mode) of the ith column.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:03.666226Z",
     "start_time": "2020-02-29T21:35:03.610141Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.impute import SimpleImputer\n",
    "\n",
    "test_set = X[0:10,0].copy() # no missing values\n",
    "# return array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "\n",
    "# manully create some missing values\n",
    "test_set[3] = np.nan\n",
    "test_set[6] = np.nan\n",
    "# now test_set becomes \n",
    "# array([8.3252, 8.3014, 7.2574,    nan, 3.8462, 4.0368,    nan, 3.12 ,2.0804, 3.6912])\n",
    "\n",
    "# create the train samples\n",
    "# in real-world, we should fit the imputer on train set and tranform the test set.\n",
    "train_set = X[10:,0].copy()\n",
    "train_set[3] = np.nan\n",
    "train_set[6] = np.nan\n",
    "\n",
    "imputer = SimpleImputer(missing_values=np.nan, strategy='mean') # use mean\n",
    "# we can set the strategy to 'mean', 'median', 'most_frequent', 'constant'\n",
    "imputer.fit(train_set.reshape(-1,1)) # fit on trainset\n",
    "# transform train set and test set\n",
    "transformed_train = imputer.transform(train_set.reshape(-1,1)).reshape(-1)\n",
    "transformed_test = imputer.transform(test_set.reshape(-1,1)).reshape(-1)\n",
    "# take transformed_test as demo:\n",
    "# transformed_test = array([8.3252    , 8.3014    , 7.2574    , 3.87023658, 3.8462    ,\n",
    "# 4.0368    , 3.87023658, 3.12      , 2.0804    , 3.6912    ])\n",
    "# all missing values are imputed with 3.87023658\n",
    "# 3.87023658 = np.nanmean(train_set) \n",
    "# which is the mean of the trainset ignoring missing values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-07T16:53:20.341003Z",
     "start_time": "2020-01-07T16:53:20.336057Z"
    }
   },
   "source": [
    "#### Multivariate feature imputation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Multivariate feature imputation uses the information from the entire dataset to estimate and impute the missing values. In scikit-learn, it implements it in an iterated round-robin fashion.\n",
    "\n",
    "\"In each step, a feature column is designated as output y and the other feature columns are treated as inputs X. A regressor is fit on (X, y) for known y. Then, the regressor is used to predict the missing values of y. This is done for each feature in an iterative fashion and then is repeated for max_iter imputation rounds. \" - From scikit-learn official website."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Using Liner Models  (BayesianRidge as example)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:03.947563Z",
     "start_time": "2020-02-29T21:35:03.668218Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.experimental import enable_iterative_imputer # have to import this to enable\n",
    "# IterativeImputer\n",
    "from sklearn.impute import IterativeImputer\n",
    "from sklearn.linear_model import BayesianRidge\n",
    "\n",
    "test_set = X[0:10,:].copy() # no missing values, select all features\n",
    "# the first column is\n",
    "# array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "\n",
    "# manully create some missing values\n",
    "test_set[3,0] = np.nan\n",
    "test_set[6,0] = np.nan\n",
    "test_set[3,1] = np.nan\n",
    "# now the first feature becomes \n",
    "# array([8.3252, 8.3014, 7.2574,    nan, 3.8462, 4.0368,    nan, 3.12 ,2.0804, 3.6912])\n",
    "\n",
    "# create the train samples\n",
    "# in real-world, we should fit the imputer on train set and tranform the test set.\n",
    "train_set = X[10:,:].copy()\n",
    "train_set[3,0] = np.nan\n",
    "train_set[6,0] = np.nan\n",
    "train_set[3,1] = np.nan\n",
    "\n",
    "impute_estimator = BayesianRidge()\n",
    "imputer = IterativeImputer(max_iter = 10, \n",
    "                           random_state = 0, \n",
    "                           estimator = impute_estimator)\n",
    "\n",
    "imputer.fit(train_set)\n",
    "transformed_train = imputer.transform(train_set)\n",
    "transformed_test = imputer.transform(test_set)\n",
    "\n",
    "# take the first column as demo:\n",
    "result = imputer.transform(test_set)[:,0] # revel how it works\n",
    "# result  = array([8.3252    , 8.3014    , 7.2574    , 4.6237195 , 3.8462    ,\n",
    "# 4.0368    , 4.00258149, 3.12      , 2.0804    , 3.6912    ])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-07T17:27:44.194064Z",
     "start_time": "2020-01-07T17:27:44.188925Z"
    }
   },
   "source": [
    "##### Using Tree-Based Models  (ExtraTrees as an example)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.423625Z",
     "start_time": "2020-02-29T21:35:03.951741Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.experimental import enable_iterative_imputer # have to import this to enable\n",
    "# IterativeImputer\n",
    "from sklearn.impute import IterativeImputer\n",
    "from sklearn.ensemble import ExtraTreesRegressor\n",
    "\n",
    "test_set = X[0:10,:].copy() # no missing values, select all features\n",
    "# the first column is\n",
    "# array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "\n",
    "# manully create some missing values\n",
    "test_set[3,0] = np.nan\n",
    "test_set[6,0] = np.nan\n",
    "test_set[3,1] = np.nan\n",
    "# now the first feature becomes \n",
    "# array([8.3252, 8.3014, 7.2574,    nan, 3.8462, 4.0368,    nan, 3.12 ,2.0804, 3.6912])\n",
    "\n",
    "# create the train samples\n",
    "# in real-world, we should fit the imputer on train set and tranform the test set.\n",
    "train_set = X[10:,:].copy()\n",
    "train_set[3,0] = np.nan\n",
    "train_set[6,0] = np.nan\n",
    "train_set[3,1] = np.nan\n",
    "\n",
    "impute_estimator = ExtraTreesRegressor(n_estimators=10, random_state=0)\n",
    "imputer = IterativeImputer(max_iter = 10, \n",
    "                           random_state = 0, \n",
    "                           estimator = impute_estimator)\n",
    "\n",
    "imputer.fit(train_set)\n",
    "transformed_train = imputer.transform(train_set)\n",
    "transformed_test = imputer.transform(test_set)\n",
    "\n",
    "# take the first column as demo:\n",
    "result = imputer.transform(test_set)[:,0] # revel how it works\n",
    "# result =  array([8.3252 , 8.3014 , 7.2574 , 4.63813, 3.8462 , 4.0368 , 3.24721,\n",
    "# 3.12   , 2.0804 , 3.6912 ])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-07T17:30:41.211593Z",
     "start_time": "2020-01-07T17:30:41.206774Z"
    }
   },
   "source": [
    "##### Using K-Nearest Neighbors (KNN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.589635Z",
     "start_time": "2020-02-29T21:35:07.427461Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.experimental import enable_iterative_imputer # have to import this to enable\n",
    "# IterativeImputer\n",
    "from sklearn.impute import IterativeImputer\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "\n",
    "test_set = X[0:10,:].copy() # no missing values, select all features\n",
    "# the first column is\n",
    "# array([8.3252, 8.3014, 7.2574, 5.6431, 3.8462, 4.0368, 3.6591, 3.12, 2.0804, 3.6912])\n",
    "\n",
    "# manully create some missing values\n",
    "test_set[3,0] = np.nan\n",
    "test_set[6,0] = np.nan\n",
    "test_set[3,1] = np.nan\n",
    "# now the first feature becomes \n",
    "# array([8.3252, 8.3014, 7.2574,    nan, 3.8462, 4.0368,    nan, 3.12 ,2.0804, 3.6912])\n",
    "\n",
    "# create the train samples\n",
    "# in real-world, we should fit the imputer on train set and tranform the test set.\n",
    "train_set = X[10:,:].copy()\n",
    "train_set[3,0] = np.nan\n",
    "train_set[6,0] = np.nan\n",
    "train_set[3,1] = np.nan\n",
    "\n",
    "impute_estimator = KNeighborsRegressor(n_neighbors=10, \n",
    "                                       p = 1)  # set p=1 to use manhanttan distance\n",
    "# use manhanttan distance to reduce effect from outliers\n",
    "\n",
    "imputer = IterativeImputer(max_iter = 10, \n",
    "                           random_state = 0, \n",
    "                           estimator = impute_estimator)\n",
    "\n",
    "imputer.fit(train_set)\n",
    "transformed_train = imputer.transform(train_set)\n",
    "transformed_test = imputer.transform(test_set)\n",
    "\n",
    "# take the first column as demo:\n",
    "result = imputer.transform(test_set)[:,0] # revel how it works\n",
    "# result =  array([8.3252, 8.3014, 7.2574, 3.6978, 3.8462, 4.0368, 4.052 , 3.12  ,\n",
    "# 2.0804, 3.6912])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Marking imputed values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sometimes the information about which values had been missing can be informative.\n",
    "So scikit-learn also provides the function to transform a dataset with missing values into corresponding binary matrix indicating the presence of missing values in the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.598628Z",
     "start_time": "2020-02-29T21:35:07.591210Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.impute import MissingIndicator\n",
    "\n",
    "# illustrate this function on trainset only\n",
    "# since the precess is independent in train set and test set\n",
    "train_set = X[10:,:].copy() # select all features\n",
    "train_set[3,0] = np.nan # manully create some missing values\n",
    "train_set[6,0] = np.nan\n",
    "train_set[3,1] = np.nan\n",
    "\n",
    "indicator = MissingIndicator(missing_values=np.nan, features='all') \n",
    "\n",
    "# show the results on all the features\n",
    "indicator_train = indicator.fit_transform(train_set) # result have the same shape with train_set\n",
    "# contains only True & False, True corresponds with missing value\n",
    "\n",
    "indicator_train[:,0].sum() # should return 2, the first column has two missing values\n",
    "indicator_train[:,1].sum(); # should return 1, the second column has one missing value"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Feature Transformation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Polynomial Transformation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sometimes we want to introduce nonlinear features into the model, therefore, increase complexity in the model. For simple linear models, this will increase the model complexity a lot. But for more complex models such as tree-based ML models, they already include nonlinear relationships in their non-parametric tree structures. Therefore, this feature transformation might not be that helpful for tree-based ML models."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For example, if we set the degree to 3 and also want to include the internaction term (below example).  \n",
    "Then $(X_1, X_2) => (1, X_1, X_2, X_1^2, X_1X_2, X_2^2, X_1^3, X_1^2X_2, X_1X_2^2, X_2^3)$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.604874Z",
     "start_time": "2020-02-29T21:35:07.600272Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "\n",
    "# illustrate this function on one synthesized sample\n",
    "train_set = np.array([2,3]).reshape(1,-1) # shape (1,2)\n",
    "# return array([[2, 3]])\n",
    "\n",
    "test_set = np.array([4,3]).reshape(1,-1)\n",
    "# return array([[4, 3]])\n",
    "\n",
    "poly = PolynomialFeatures(degree = 3, interaction_only = False)\n",
    "# the highest degree is set to 3, and we want more than just intereaction terms\n",
    "\n",
    "# take train set as an example: \n",
    "transformed_train = poly.fit_transform(train_set) # have shape (1, 10)\n",
    "transformed_test = poly.fit_transform(test_set) # have shape (1, 10)\n",
    "\n",
    "# take train set as an example: \n",
    "# transformed_train = array([[ 1.,  2.,  3.,  4.,  6.,  9.,  8., 12., 18., 27.]])\n",
    "# match the above equation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Custom Transformation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.612399Z",
     "start_time": "2020-02-29T21:35:07.606899Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import FunctionTransformer\n",
    "\n",
    "# illustrate this function on one synthesized sample\n",
    "train_set = np.array([2,3]).reshape(1,-1) # shape (1,2)\n",
    "# return array([[2, 3]])\n",
    "\n",
    "test_set = np.array([4,3]).reshape(1,-1)\n",
    "# return array([[4, 3]])\n",
    "\n",
    "transformer = FunctionTransformer(func = np.log1p, validate=True)\n",
    "# perform log transformation, X' = log(1 + x)\n",
    "# func can be any numpy function such as np.exp\n",
    "\n",
    "transformed_train = transformer.fit_transform(train_set) # has shape (1, 2)\n",
    "transformed_test = transformer.fit_transform(test_set) # has shape (1, 2)\n",
    "\n",
    "# take train set as an example: \n",
    "# transformed_train = return array([[1.09861229, 1.38629436]]), the same as np.log1p(train_set)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Static Categorical Variables"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the real world, it is often that datasets include categorical features. But since models in scikit-learn can only handle numeric features, so we need to encode categorical features into continuous features. However, many new models such as lightGBM &Catboost implemented in other packages can directly support categorical features. Here we use category_encoders package since it covers more encoding methods."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Ordinal Encoding"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ordinal Encoding transforms each categorical feature to one new feature of integers (1 to n_categories). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.634056Z",
     "start_time": "2020-02-29T21:35:07.614429Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders import OrdinalEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.645199Z",
     "start_time": "2020-02-29T21:35:07.635569Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.653354Z",
     "start_time": "2020-02-29T21:35:07.647047Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.678273Z",
     "start_time": "2020-02-29T21:35:07.654703Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Sex  Type\n",
       "0  2.0   2.0\n",
       "1  1.0   2.0\n",
       "2 -1.0   3.0\n",
       "3  1.0   2.0\n",
       "4  2.0  -2.0\n",
       "5  1.0  -1.0"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = OrdinalEncoder(cols=['Sex', 'Type'], \n",
    "                         handle_unknown = 'value', \n",
    "                         handle_missing = 'value').fit(train_set,train_y) # fit on trainset\n",
    "# set handle_unknown to ‘value‘ => mark unknown category value in the test set as -1\n",
    "# set handle_missing to ‘value‘ => mark missing value in the test set as -2\n",
    "# other available options for handle_unknown/handle_missing: \n",
    "# 'error': report error; 'return_nan': mark unknown category / missing value as nan\n",
    "\n",
    "encoded_train = encoder.transform(train_set) # transform the train set\n",
    "encoded_test = encoder.transform(test_set) # transform the test set\n",
    "\n",
    "encoded_test\n",
    "\n",
    "# take the test set result as an example:\n",
    "# In Oridnal Encoding:\n",
    "  \n",
    "# Feature Sex: 'male' => 1.0, 'female' => 2.0, unknown => -1., missing => -2.\n",
    "# (it is also possible that testset have new labels)\n",
    "# in our example, 'other' type in Sex feature is unknown\n",
    "# since it never appears in train set\n",
    "  \n",
    "# Feature Type: 10 => 1.0, 20 => 2.0, 15 => 3.0, unknown => -1., missing => -2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.687832Z",
     "start_time": "2020-02-29T21:35:07.680481Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Sex  Type\n",
       "0  1.0   1.0\n",
       "1  2.0   2.0\n",
       "2  1.0   1.0\n",
       "3  2.0   2.0\n",
       "4  2.0   3.0"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoded_train.astype(float) # transformed train set"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### One-hot Encoding"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One-hot Encoding in scikit-learn transforms categorical features with n_categories possible values into n_categories binary features, with one of them 1, and all others 0. In category_encoders, it will create one additional feature indicating missing or unknown values. Here we continue to use category_encoders."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.697260Z",
     "start_time": "2020-02-29T21:35:07.689556Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders import OneHotEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.705859Z",
     "start_time": "2020-02-29T21:35:07.698782Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.715453Z",
     "start_time": "2020-02-29T21:35:07.707631Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.758190Z",
     "start_time": "2020-02-29T21:35:07.717176Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_nan</th>\n",
       "      <th>Sex_-1</th>\n",
       "      <th>Type_10</th>\n",
       "      <th>Type_20</th>\n",
       "      <th>Type_15</th>\n",
       "      <th>Type_nan</th>\n",
       "      <th>Type_-1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Sex_male  Sex_female  Sex_nan  Sex_-1  Type_10  Type_20  Type_15  Type_nan  \\\n",
       "0         0           1        0       0        0        1        0         0   \n",
       "1         1           0        0       0        0        1        0         0   \n",
       "2         0           0        0       1        0        0        1         0   \n",
       "3         1           0        0       0        0        1        0         0   \n",
       "4         0           1        0       0        0        0        0         1   \n",
       "5         1           0        0       0        0        0        0         0   \n",
       "\n",
       "   Type_-1  \n",
       "0        0  \n",
       "1        0  \n",
       "2        0  \n",
       "3        0  \n",
       "4        0  \n",
       "5        1  "
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = OneHotEncoder(cols=['Sex', 'Type'], \n",
    "                        handle_unknown='indicator', \n",
    "                        handle_missing='indicator', \n",
    "                        use_cat_names=True).fit(train_set,train_y) #fit on train set\n",
    "encoded_train = encoder.transform(train_set) # transform train set\n",
    "encoded_test = encoder.transform(test_set) # transform test set\n",
    "# set handle_unknown to ‘indicator’ => add a new column indicates unknown category value\n",
    "# set handle_missing to ‘indicator’ => add a new column indicates missing value\n",
    "# other handle_unknown/handle_missing option：\n",
    "# ‘error’：report error; ‘return_nan’：mark misssing/unknown as nan; \n",
    "# ‘value’：mark misssing/unknown as 0;\n",
    "\n",
    "# take test set result as an example\n",
    "encoded_test\n",
    "\n",
    "# take the test set result as an example:\n",
    "# In One-hot Encoding:\n",
    "  \n",
    "# feature Sex => 4 new columns: 'male' => [1 ,0 ,0, 0];\n",
    "#                               'female' => [0 ,1 ,0, 0];\n",
    "#                                unknown =>  [0 ,0 ,0, 1];\n",
    "#                                missing => [0, 0, 1, 0];\n",
    "    \n",
    "# feature Type => 5 new columns: 10 => [1, 0, 0, 0, 0];\n",
    "#                                20 => [0, 1, 0, 0, 0];, \n",
    "#                                15 => [0, 0, 1, 0, 0];\n",
    "#                                unknown => [0, 0, 0, 0, 1];\n",
    "#                                missing => [0, 0, 0, 1, 0];  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Hashing Encoding"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Hashing Encoding is based on the technique known as feature hashing. It applies a hash function to the features to map data of arbitrary number of features to fixed-size features. The hash function might cause collisions between features. The advantage of the hashing encoder is that it does not maintain a predefined dictionary of observed categories. Consequently, the encoder does not grow in size and accepts new values during data scoring by design."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.766959Z",
     "start_time": "2020-02-29T21:35:07.760101Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders.hashing import HashingEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.775465Z",
     "start_time": "2020-02-29T21:35:07.768747Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:07.785223Z",
     "start_time": "2020-02-29T21:35:07.777345Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.199725Z",
     "start_time": "2020-02-29T21:35:07.786937Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>col_0</th>\n",
       "      <th>col_1</th>\n",
       "      <th>col_2</th>\n",
       "      <th>col_3</th>\n",
       "      <th>col_4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   col_0  col_1  col_2  col_3  col_4\n",
       "0      1      1      0      0      0\n",
       "1      0      1      0      0      1\n",
       "2      0      0      0      2      0\n",
       "3      0      1      0      0      1\n",
       "4      1      0      1      0      0\n",
       "5      0      0      0      0      2"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = HashingEncoder(cols=['Sex', 'Type'], \n",
    "                         n_components = 5).fit(train_set,train_y) \n",
    "encoded_train = encoder.transform(train_set) # transform the train set\n",
    "encoded_test = encoder.transform(test_set) # transform the test set\n",
    "\n",
    "# hash the dataset with two columns into 5 columns\n",
    "# hashing encoding results has nothing to do with the content in train_set\n",
    "# we can fit the hasher on any dataset as long as the column names matches.\n",
    "# it is only deternmined by the hashing function\n",
    "\n",
    "# normally hashing encoding should be apply to higher & sparser dimensional space \n",
    "# take test set result as example:\n",
    "encoded_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.209615Z",
     "start_time": "2020-02-29T21:35:08.202257Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>col_0</th>\n",
       "      <th>col_1</th>\n",
       "      <th>col_2</th>\n",
       "      <th>col_3</th>\n",
       "      <th>col_4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   col_0  col_1  col_2  col_3  col_4\n",
       "0      0      0      0      0      2\n",
       "1      1      1      0      0      0\n",
       "2      0      0      0      0      2\n",
       "3      1      1      0      0      0\n",
       "4      1      0      0      1      0"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoded_train # train set result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Helmert Encoding"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Helmert Coding is commonly used in econometrics. After the Helmert Coding (Each value in the categorical feature corresponds with one row in the Helmert Matrix), the coefficient of the encoded columns in the linear model can reflect the mean of the dependent variable for a level compared with the mean of the dependent variable over all previous levels. The Helmert Coding implemented in the category_encoders package is referred to as Reverse Helmert Coding. For more reference, please check the [link](https://www.statsmodels.org/devel/contrasts.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.217925Z",
     "start_time": "2020-02-29T21:35:08.211432Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders import HelmertEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.225472Z",
     "start_time": "2020-02-29T21:35:08.219583Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.233937Z",
     "start_time": "2020-02-29T21:35:08.226701Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.273263Z",
     "start_time": "2020-02-29T21:35:08.235814Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>intercept</th>\n",
       "      <th>Sex_0</th>\n",
       "      <th>Sex_1</th>\n",
       "      <th>Sex_2</th>\n",
       "      <th>Type_0</th>\n",
       "      <th>Type_1</th>\n",
       "      <th>Type_2</th>\n",
       "      <th>Type_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   intercept  Sex_0  Sex_1  Sex_2  Type_0  Type_1  Type_2  Type_3\n",
       "0          1    1.0   -1.0   -1.0     1.0    -1.0    -1.0    -1.0\n",
       "1          1   -1.0   -1.0   -1.0     1.0    -1.0    -1.0    -1.0\n",
       "2          1    0.0    0.0    3.0     0.0     2.0    -1.0    -1.0\n",
       "3          1   -1.0   -1.0   -1.0     1.0    -1.0    -1.0    -1.0\n",
       "4          1    1.0   -1.0   -1.0     0.0     0.0     3.0    -1.0\n",
       "5          1   -1.0   -1.0   -1.0     0.0     0.0     0.0     4.0"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = HelmertEncoder(cols=['Sex', 'Type'], \n",
    "                         handle_unknown='indicator', \n",
    "                         handle_missing='indicator').fit(train_set,train_y) # fit on trainset\n",
    "encoded_train = encoder.transform(train_set) # transform train set\n",
    "encoded_test = encoder.transform(test_set) # transform test set\n",
    "# set handle_unknown to ‘indicator’ => add a new column indicates unknown category value\n",
    "# set handle_missing to ‘indicator’ => add a new column indicates missing value\n",
    "# other handle_unknown/handle_missing option：\n",
    "# ‘error’：report error; ‘return_nan’：mark misssing/unknown as nan; \n",
    "# ‘value’：mark misssing/unknown as 0;\n",
    "\n",
    "# take test set result as an example\n",
    "encoded_test\n",
    "\n",
    "# take the test set result as an example:\n",
    "# In Helmert Encoding: \n",
    "  \n",
    "# feature Sex => 4 new columns（including intercept）: 'male' => [ 1. -1. -1. -1.];\n",
    "#                                                     'female' => [ 1.  1. -1. -1.];\n",
    "#                                                      unknown =>  [ 1.  0.  0.  3.];\n",
    "#                                                       missing => [ 1.  0.  2. -1.];\n",
    "    \n",
    "# feature Type => 5 new columns（including intercept）: 10 => [ 1. -1. -1. -1. -1.];\n",
    "#                                                      20 => [ 1.  1. -1. -1. -1.];\n",
    "#                                                      15 => [ 1.  0.  2. -1. -1.];\n",
    "#                                                      unknown =>  [ 1.  0.  0.  0.  4.];\n",
    "#                                                      missing => [ 1.  0.  0.  3. -1.];  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.278762Z",
     "start_time": "2020-02-29T21:35:08.274681Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1. -1. -1. -1. -1.]\n",
      " [ 1.  1. -1. -1. -1.]\n",
      " [ 1.  0.  2. -1. -1.]\n",
      " [ 1.  0.  0.  3. -1.]\n",
      " [ 1.  0.  0.  0.  4.]]\n"
     ]
    }
   ],
   "source": [
    "# can use the below code to calculate the Helmert Matrix for feature Type\n",
    "\n",
    "from patsy.contrasts import Helmert\n",
    "levels = [1,2,3,4,5] # 3 category value in trainset + 1 unknown + 1 missing\n",
    "contrast = Helmert().code_with_intercept(levels)\n",
    "print(contrast.matrix) # thge first column is intercept"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.293058Z",
     "start_time": "2020-02-29T21:35:08.280266Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>intercept</th>\n",
       "      <th>Sex_0</th>\n",
       "      <th>Sex_1</th>\n",
       "      <th>Sex_2</th>\n",
       "      <th>Type_0</th>\n",
       "      <th>Type_1</th>\n",
       "      <th>Type_2</th>\n",
       "      <th>Type_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   intercept  Sex_0  Sex_1  Sex_2  Type_0  Type_1  Type_2  Type_3\n",
       "0          1   -1.0   -1.0   -1.0    -1.0    -1.0    -1.0    -1.0\n",
       "1          1    1.0   -1.0   -1.0     1.0    -1.0    -1.0    -1.0\n",
       "2          1   -1.0   -1.0   -1.0    -1.0    -1.0    -1.0    -1.0\n",
       "3          1    1.0   -1.0   -1.0     1.0    -1.0    -1.0    -1.0\n",
       "4          1    1.0   -1.0   -1.0     0.0     2.0    -1.0    -1.0"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoded_train # train set result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sum (Deviation) Encoding"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Sum Coding is also commonly used in econometrics. After the Sum Coding, the coefficient of the encoded columns in the linear model can reflect the mean of the dependent variable for a given level compared with the overall mean of the dependent variable over all the levels. For more reference, please check the [link](https://www.statsmodels.org/devel/contrasts.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.301190Z",
     "start_time": "2020-02-29T21:35:08.294816Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders.sum_coding import SumEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.310490Z",
     "start_time": "2020-02-29T21:35:08.303167Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.319138Z",
     "start_time": "2020-02-29T21:35:08.312117Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.357868Z",
     "start_time": "2020-02-29T21:35:08.320896Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>intercept</th>\n",
       "      <th>Sex_0</th>\n",
       "      <th>Sex_1</th>\n",
       "      <th>Sex_2</th>\n",
       "      <th>Type_0</th>\n",
       "      <th>Type_1</th>\n",
       "      <th>Type_2</th>\n",
       "      <th>Type_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   intercept  Sex_0  Sex_1  Sex_2  Type_0  Type_1  Type_2  Type_3\n",
       "0          1    0.0    1.0    0.0     0.0     1.0     0.0     0.0\n",
       "1          1    1.0    0.0    0.0     0.0     1.0     0.0     0.0\n",
       "2          1   -1.0   -1.0   -1.0     0.0     0.0     1.0     0.0\n",
       "3          1    1.0    0.0    0.0     0.0     1.0     0.0     0.0\n",
       "4          1    0.0    1.0    0.0     0.0     0.0     0.0     1.0\n",
       "5          1    1.0    0.0    0.0    -1.0    -1.0    -1.0    -1.0"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = SumEncoder(cols=['Sex', 'Type'], \n",
    "                     handle_unknown='indicator', \n",
    "                     handle_missing='indicator').fit(train_set,train_y) # fit on trainset\n",
    "encoded_train = encoder.transform(train_set) # transform train set\n",
    "encoded_test = encoder.transform(test_set)  # transform test set\n",
    "# set handle_unknown to ‘indicator’ => add a new column indicates unknown category value\n",
    "# set handle_missing to ‘indicator’ => add a new column indicates missing value\n",
    "# other handle_unknown/handle_missing option：\n",
    "# ‘error’：report error; ‘return_nan’：mark misssing/unknown as nan; \n",
    "# ‘value’：mark misssing/unknown as 0;\n",
    "\n",
    "# take test set result as an example\n",
    "encoded_test\n",
    "\n",
    "# take the test set result as an example:\n",
    "# In Sum(Deviation) Encoding: \n",
    "  \n",
    "# feature Sex => 4 new columns（including intercept）: 'male' => [ 1.  1.  0.  0.];\n",
    "#                                                    'female' => [ 1.  0.  1.  0.];\n",
    "#                                                     unknown =>  [ 1. -1. -1. -1.];\n",
    "#                                                     missing => [ 1.  0.  0.  1.];\n",
    "    \n",
    "# feature Type => 5 new columns（including intercept）: 10 => [ 1.  1.  0.  0.  0.];\n",
    "#                                                      20 => [ 1.  0.  1.  0.  0.];, \n",
    "#                                                      15 => [ 1.  0.  0.  1.  0.];\n",
    "#                                                      unknown =>  [ 1. -1. -1. -1. -1.];\n",
    "#                                                      missing => [ 1.  0.  0.  0.  1.];  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.363824Z",
     "start_time": "2020-02-29T21:35:08.359424Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1.  1.  0.  0.  0.]\n",
      " [ 1.  0.  1.  0.  0.]\n",
      " [ 1.  0.  0.  1.  0.]\n",
      " [ 1.  0.  0.  0.  1.]\n",
      " [ 1. -1. -1. -1. -1.]]\n"
     ]
    }
   ],
   "source": [
    "# can use the below code to calculate theDeviation  Matrix for feature Type\n",
    "\n",
    "from patsy.contrasts import Sum\n",
    "levels = [1,2,3,4,5] # 3 category value in trainset + 1 unknown + 1 missing\n",
    "contrast = Sum().code_with_intercept(levels)\n",
    "print(contrast.matrix) # thge first column is intercept"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.376290Z",
     "start_time": "2020-02-29T21:35:08.365686Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>intercept</th>\n",
       "      <th>Sex_0</th>\n",
       "      <th>Sex_1</th>\n",
       "      <th>Sex_2</th>\n",
       "      <th>Type_0</th>\n",
       "      <th>Type_1</th>\n",
       "      <th>Type_2</th>\n",
       "      <th>Type_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   intercept  Sex_0  Sex_1  Sex_2  Type_0  Type_1  Type_2  Type_3\n",
       "0          1    1.0    0.0    0.0     1.0     0.0     0.0     0.0\n",
       "1          1    0.0    1.0    0.0     0.0     1.0     0.0     0.0\n",
       "2          1    1.0    0.0    0.0     1.0     0.0     0.0     0.0\n",
       "3          1    0.0    1.0    0.0     0.0     1.0     0.0     0.0\n",
       "4          1    0.0    1.0    0.0     0.0     0.0     1.0     0.0"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoded_train # train set result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Target Encoding"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Target encoding is a method to encode categorical variables with only one single column based on not only the feature values themselves but also the corresponding target.\n",
    "\n",
    "For the case of categorical target: features are replaced with a blend of the posterior probability of the target given particular categorical value and the prior probability of the target over all the training data.\n",
    "\n",
    "For the case of continuous target: features are replaced with a blend of the expected value of the target given particular categorical value and the expected value of the target over all the training data.\n",
    "\n",
    "This method relies heavily on the distribution of the target. But it significantly reduces the number of encoded features generated."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Formula:  \n",
    "$smoove = \\frac{1}{1+ exp(-\\frac{n-min\\_samples\\_leaf}{smoothing})}$  \n",
    "$X_k' = Prior\\_Prob* (1 - smoove) + smoove * Condition\\_Prob $  \n",
    "$Condition\\_Prob =\\frac{n^{+}}{n} $\n",
    "  \n",
    "Where min_samples_leaf & smoothing are user defined parameters;  \n",
    "min_samples_leaf: the minimum number of samples to take category average into account;  \n",
    "smoothing: the smoothing effect to balance categorical average vs prior. Higher value means stronger regularization;  \n",
    "$X_k'$ is the encoded value of value k in category feature X;  \n",
    "Prior Prob: the prior probability/ expectation of the target variable;  \n",
    "n: the number of samples that have value k in feature X;  \n",
    "$n^{+}$: the number of samples that not only have value k in feature X but also have positive outcome;  \n",
    "  \n",
    "Reference: Micci-Barreca, D. (2001). A preprocessing scheme for high-cardinality categorical attributes in classification and prediction problems. ACM SIGKDD Explorations Newsletter, 3(1), 27-32."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.385037Z",
     "start_time": "2020-02-29T21:35:08.377710Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders.target_encoder import TargetEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.393003Z",
     "start_time": "2020-02-29T21:35:08.386732Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.400964Z",
     "start_time": "2020-02-29T21:35:08.394598Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.514277Z",
     "start_time": "2020-02-29T21:35:08.402869Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.341280</td>\n",
       "      <td>0.473106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.473106</td>\n",
       "      <td>0.473106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.400000</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.473106</td>\n",
       "      <td>0.473106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.341280</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.473106</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex      Type\n",
       "0  0.341280  0.473106\n",
       "1  0.473106  0.473106\n",
       "2  0.400000  0.400000\n",
       "3  0.473106  0.473106\n",
       "4  0.341280  0.400000\n",
       "5  0.473106  0.400000"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = TargetEncoder(cols=['Sex','Type'], \n",
    "                        handle_unknown='value',  \n",
    "                        handle_missing='value').fit(train_set,train_y) # fit on trainset\n",
    "# handle_unknown & handle_missingis set to 'value'\n",
    "# they only accept ‘error’, ‘return_nan’ and ‘value’, \n",
    "# both of them have default as ‘value’\n",
    "# which returns the target mean for unknown category or missing value\n",
    "\n",
    "encoded_train = encoder.transform(train_set) # transform train set\n",
    "encoded_test = encoder.transform(test_set)  # transform test set\n",
    "\n",
    "encoded_test # only two columns are returned!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.522767Z",
     "start_time": "2020-02-29T21:35:08.516364Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4731058578630005"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# validate the result for male, which has encoded value 0.473106\n",
    "prior = train_y.mean()\n",
    "min_samples_leaf = 1.0 # default is 1.0\n",
    "smothing = 1.0 # default is 1.0\n",
    "n = 2 # 2 samples have male tag in train_set\n",
    "n_positive = 1 # only one of them has positive outcome in train_set\n",
    "\n",
    "𝑠𝑚𝑜𝑜𝑣𝑒 = 1 / (1 + np.exp(-(n - min_samples_leaf) / smothing))\n",
    "male_encode = prior * (1-𝑠𝑚𝑜𝑜𝑣𝑒) + 𝑠𝑚𝑜𝑜𝑣𝑒 * n_positive/n\n",
    "male_encode # return 0.4731058578630005"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.531316Z",
     "start_time": "2020-02-29T21:35:08.524548Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.473106</td>\n",
       "      <td>0.473106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.341280</td>\n",
       "      <td>0.473106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.473106</td>\n",
       "      <td>0.473106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.341280</td>\n",
       "      <td>0.473106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.341280</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex      Type\n",
       "0  0.473106  0.473106\n",
       "1  0.341280  0.473106\n",
       "2  0.473106  0.473106\n",
       "3  0.341280  0.473106\n",
       "4  0.341280  0.400000"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoded_train # train set result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### M-estimate Encoding"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "M-estimate Encoding is a simplified version of the target encoder, which goes under names like m-probability estimate or additive smoothing with known incidence rates. In comparison to the target encoder, m-probability estimate has only one tunable parameter (m), while the target encoder has two tunable parameters (min_samples_leaf and smoothing)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Formula:  \n",
    "$X_k' = \\frac{n^{+} + prior * m}{y^{+} + m}$  \n",
    "\n",
    "Where m is a user defined parameter;  \n",
    "m: higher value of m results in stronger shrinking. M is non-negative.  \n",
    "$X_k'$ is the encoded value of value k in category feature X;  \n",
    "Prior: the prior probability/ expectation of the target variable;  \n",
    "$n^{+}$: the number of sample that not only have value k in feature X but also have positive outcome;  \n",
    "$y^{+}$: the number of sample that have positive outcome;  \n",
    "  \n",
    "Reference: Micci-Barreca, D. (2001). A preprocessing scheme for high-cardinality categorical attributes in classification and prediction problems. ACM SIGKDD Explorations Newsletter, 3(1), 27-32."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.541453Z",
     "start_time": "2020-02-29T21:35:08.533371Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders.m_estimate import MEstimateEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.551089Z",
     "start_time": "2020-02-29T21:35:08.543476Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.559420Z",
     "start_time": "2020-02-29T21:35:08.552780Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.601994Z",
     "start_time": "2020-02-29T21:35:08.561435Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.350000</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.400000</td>\n",
       "      <td>0.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.350000</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex      Type\n",
       "0  0.350000  0.466667\n",
       "1  0.466667  0.466667\n",
       "2  0.400000  0.200000\n",
       "3  0.466667  0.466667\n",
       "4  0.350000  0.400000\n",
       "5  0.466667  0.400000"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = MEstimateEncoder(cols=['Sex','Type'], \n",
    "                           handle_unknown='value',  \n",
    "                           handle_missing='value').fit(train_set,train_y) # fit on trainset\n",
    "# handle_unknown & handle_missingis set to 'value'\n",
    "# they only accept ‘error’, ‘return_nan’ and ‘value’, \n",
    "# both of them have default as ‘value’\n",
    "# which returns the target mean for unknown category or missing value\n",
    "\n",
    "encoded_train = encoder.transform(train_set) # transform train set\n",
    "encoded_test = encoder.transform(test_set)  # transform test set\n",
    "\n",
    "encoded_test # only two columns are returned!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.608595Z",
     "start_time": "2020-02-29T21:35:08.603999Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4666666666666666"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# validate the result for male, which has encoded value 0.466667\n",
    "\n",
    "y_positive = 2 # 2 samples have positive outcome in train_y\n",
    "n_positive = 1 # 2 samples have male tag in train_set, only one has positive outcome in train_set\n",
    "prior = train_y.mean()\n",
    "m = 1.0 # default value\n",
    "male_encode = (n_positive + prior * m)/(y_positive + m)\n",
    "male_encode # return 0.4666666666666666"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.618268Z",
     "start_time": "2020-02-29T21:35:08.610612Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.350000</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.350000</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.350000</td>\n",
       "      <td>0.200000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex      Type\n",
       "0  0.466667  0.466667\n",
       "1  0.350000  0.466667\n",
       "2  0.466667  0.466667\n",
       "3  0.350000  0.466667\n",
       "4  0.350000  0.200000"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoded_train # train set result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### James-Stein Encoder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "James-Stein Encoder is also an encoding method based on target encoding. James-Stein Encoder tries to balance the conditional probability for the observed feature value i and the prior probability through parameter B. This is quite similar to the target encoder, but James-Stein Encoder balances two probabilities by the variance ratio instead of the sample size.  \n",
    "\n",
    "It uses several methods such as independent method, pooled method, etc. to estimate the parameter B. For more information, please refer to [the official website of category_encoders](http://contrib.scikit-learn.org/categorical-encoding/jamesstein.html). \n",
    "James-Stein Encoder is defined only for normal distributions. To meet the required assumption, we can either convert binary targets with a log-odds ratio as it was done in WoE Encoder (which is used by default because it is simple) or use beta distribution.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The formula for independent method:  \n",
    "$X_k' = (1 - B) * Condition\\_Prob + B * prior $  \n",
    "$B = \\frac{Var(y^{k})}{Var(y^{k}) + Var(y)}$  \n",
    "$Condition\\_Prob =\\frac{n^{+}}{n} $\n",
    "  \n",
    "Where,\n",
    "$X_k'$ is the encoded value of value k in category feature X;  \n",
    "Prior: the prior probability/ expectation of the target variable;  \n",
    "$n^{+}$: the number of sample that not only have value k in feature X but also have positive outcome;  \n",
    "$n$: the number of sample that have value k;  \n",
    "$Var(y^{k})$: the variance of the population (that have value k in feature X)' outcome mean;  \n",
    "$Var(y)$: the variance of the population outcome;  \n",
    "Both $Var(y^{k})$ & $Var(y)$ should be estimated through sample statistics. The intuition behind B is that: if Condition_Prob, the estimate of mean(y_k) is unreliable (y_k has high variance), we should put more weight on the prior, which is mean(y). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.628006Z",
     "start_time": "2020-02-29T21:35:08.619961Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders.james_stein import JamesSteinEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.637036Z",
     "start_time": "2020-02-29T21:35:08.630018Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.653357Z",
     "start_time": "2020-02-29T21:35:08.644569Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.714516Z",
     "start_time": "2020-02-29T21:35:08.656851Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.400000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex  Type\n",
       "0  0.333333   0.5\n",
       "1  0.500000   0.5\n",
       "2  0.400000   0.0\n",
       "3  0.500000   0.5\n",
       "4  0.333333   0.4\n",
       "5  0.500000   0.4"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = JamesSteinEncoder(cols=['Sex','Type'], \n",
    "                           handle_unknown='value', \n",
    "                           model='independent',  \n",
    "                           handle_missing='value').fit(train_set,train_y) # fit on trainset\n",
    "# handle_unknown & handle_missingis set to 'value'\n",
    "# they only accept ‘error’, ‘return_nan’ and ‘value’, \n",
    "# both of them have default as ‘value’\n",
    "# which returns the target mean for unknown category or missing value\n",
    "\n",
    "encoded_train = encoder.transform(train_set) # transform train set\n",
    "encoded_test = encoder.transform(test_set)  # transform test set\n",
    "\n",
    "encoded_test # only two columns are returned!\n",
    "\n",
    "# since in the category_encoders, it modifies slightly the equation above, so we will not\n",
    "# validate the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.723491Z",
     "start_time": "2020-02-29T21:35:08.716231Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex  Type\n",
       "0  0.500000   0.5\n",
       "1  0.333333   0.5\n",
       "2  0.500000   0.5\n",
       "3  0.333333   0.5\n",
       "4  0.333333   0.0"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoded_train # train set result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Weight of Evidence Encoder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The weight of evidence encoder also encodes the categorical variable based on their relationship with the target variable. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Formula:  \n",
    "$WoE = X_k' = ln(\\frac{distribution\\_of\\_positive}{distribution\\_of\\_negative})$  \n",
    "$distribution\\_of\\_positive = \\frac{n^{+}}{y^{+}}$  \n",
    "$distribution\\_of\\_negative = \\frac{n^{-}}{y^{-}}$  \n",
    "  \n",
    "Above is the original definition of WoE, but in category_encoders, it also adds regulization to prevent overfitting. So the new $distribution\\_of\\_positive$, $distribution\\_of\\_negative$ are as below:  \n",
    "\n",
    "$distribution\\_of\\_positive = \\frac{n^{+} + regularization }{y^{+} + 2 * regularization }$  \n",
    "$distribution\\_of\\_negative = \\frac{n^{-} + regularization }{y^{-} + 2 * regularization }$ "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.733750Z",
     "start_time": "2020-02-29T21:35:08.725311Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders.woe import WOEEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.741567Z",
     "start_time": "2020-02-29T21:35:08.735392Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.749863Z",
     "start_time": "2020-02-29T21:35:08.743417Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.792621Z",
     "start_time": "2020-02-29T21:35:08.751312Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.182322</td>\n",
       "      <td>0.223144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.223144</td>\n",
       "      <td>0.223144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.223144</td>\n",
       "      <td>0.223144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.182322</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.223144</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex      Type\n",
       "0 -0.182322  0.223144\n",
       "1  0.223144  0.223144\n",
       "2  0.000000  0.000000\n",
       "3  0.223144  0.223144\n",
       "4 -0.182322  0.000000\n",
       "5  0.223144  0.000000"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = WOEEncoder(cols=['Sex','Type'], \n",
    "                     handle_unknown='value',  \n",
    "                     handle_missing='value').fit(train_set,train_y) # fit on trainset\n",
    "\n",
    "# handle_unknown & handle_missingis set to 'value'\n",
    "# they only accept ‘error’, ‘return_nan’ and ‘value’, \n",
    "# both of them have default as ‘value’\n",
    "# which returns the target mean for unknown category or missing value\n",
    "\n",
    "encoded_train = encoder.transform(train_set) # transform train set\n",
    "encoded_test = encoder.transform(test_set)  # transform test set\n",
    "\n",
    "encoded_test # only two columns are returned!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.800556Z",
     "start_time": "2020-02-29T21:35:08.794268Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.22314355131420976"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# validate the result for male, which has encoded value 0.223144\n",
    "\n",
    "y = 5 # 5 samples in the train_set\n",
    "y_positive = 2 # 2 samples have positive outcome in train_y\n",
    "\n",
    "n = 2 # 2 samples have male tag in train_set\n",
    "n_positive = 1 # only one has positive outcome in train_set\n",
    "\n",
    "regularization = 1.0 # default value\n",
    "\n",
    "dis_postive = (n_positive + regularization) / (y_positive + 2 * regularization)\n",
    "dis_negative = (n - n_positive + regularization) / (y - y_positive + 2 * regularization)\n",
    "male_encode = np.log(dis_postive / dis_negative)\n",
    "male_encode # return  0.22314355131420976"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.808234Z",
     "start_time": "2020-02-29T21:35:08.802055Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.223144</td>\n",
       "      <td>0.223144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.182322</td>\n",
       "      <td>0.223144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.223144</td>\n",
       "      <td>0.223144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.182322</td>\n",
       "      <td>0.223144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.182322</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex      Type\n",
       "0  0.223144  0.223144\n",
       "1 -0.182322  0.223144\n",
       "2  0.223144  0.223144\n",
       "3 -0.182322  0.223144\n",
       "4 -0.182322  0.000000"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoded_train # train set result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Leave One Out Encoder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Leave One Out Encoder simply encodes each group(a unique value group in categorical feature) by the group mean. But it takes over-fitting into consideration and encodes each sample in the train set by the group mean excluding the sample itself. So in the trainset, each sample that has the same group value may be encoded in different values.\n",
    "\n",
    "It encodes test set in a different way, each sample in the test set is encoded by the group mean in the train set without any exclusion."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Formula:  \n",
    "Train set: $X_i^k = \\frac{\\sum_{j\\neq i} (y_j * (x_j == k))}{\\sum_{j\\neq i} ( x_j == k)}$  \n",
    "Test set: $X_i^k = \\frac{\\sum_{j} (y_j * (x_j == k))}{\\sum_{j} ( x_j == k)}$  \n",
    "($x_j == k$) will return 1 if sample j have tag K in categorical feature X and return 0 if not  \n",
    "$X_i^k$ is the encoded value of sample i if it has value k in category feature X; "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.816959Z",
     "start_time": "2020-02-29T21:35:08.810262Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders.leave_one_out import LeaveOneOutEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.825070Z",
     "start_time": "2020-02-29T21:35:08.818869Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.834239Z",
     "start_time": "2020-02-29T21:35:08.827142Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.891215Z",
     "start_time": "2020-02-29T21:35:08.835752Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.400000</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex  Type\n",
       "0  0.333333   0.5\n",
       "1  0.500000   0.5\n",
       "2  0.400000   0.4\n",
       "3  0.500000   0.5\n",
       "4  0.333333   0.4\n",
       "5  0.500000   0.4"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoder = LeaveOneOutEncoder(cols=['Sex','Type'], \n",
    "                             handle_unknown='value',  \n",
    "                             handle_missing='value').fit(train_set,train_y) # fit on trainset\n",
    "\n",
    "# handle_unknown & handle_missingis set to 'value'\n",
    "# they only accept ‘error’, ‘return_nan’ and ‘value’, \n",
    "# both of them have default as ‘value’\n",
    "# which returns the target mean for unknown category or missing value\n",
    "\n",
    "encoded_train = encoder.transform(train_set) # transform train set\n",
    "encoded_test = encoder.transform(test_set)  # transform test set\n",
    "\n",
    "encoded_test # only two columns are returned!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.947390Z",
     "start_time": "2020-02-29T21:35:08.893419Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.5</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.5</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Sex  Type\n",
       "0  1.0   1.0\n",
       "1  0.0   0.0\n",
       "2  0.0   0.0\n",
       "3  0.5   1.0\n",
       "4  0.5   0.4"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# encoded result for train_set\n",
    "LeaveOneOutEncoder(cols=['Sex','Type'],\n",
    "                   handle_unknown='value',  \n",
    "                   handle_missing='value').fit_transform(train_set,train_y)\n",
    "# for the first sample, it has male tag, when excluding this sample, the sample for male\n",
    "# group becomes 1.0 (only one sample has male tage, and it has positive outcome)\n",
    "# But for third samples, although it also has male tag, it is encoded with 0.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Catboost Encoder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "CatBoost is a Gradient Boosting model that has excellent results especially for the dataset contains a large number of categorical features. The model proposes a new encoding system based on Leave One Out Encoder for categorical features. The training data have to be randomly permutated before using Catboost Encoder because, in Catboost, the encoded value is based on an idea of “time”, which is the order of observations in the dataset."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Formula:  \n",
    "Train set: $\\frac{\\sum_{j < i} (y_j * (x_j == k)) + a * Prior}{\\sum_{j<i} (x_j == k) + a}$  \n",
    "Test set: $X_i^k = \\frac{\\sum_{j} (y_j * (x_j == k)) + a * Prior}{\\sum_{j} ( x_j == k) + a}$  \n",
    "($x_j == k$) will return 1 if sample j have tag K in categorical feature X and return 0 if not  \n",
    "$X_i^k$ is the encoded value of sample i if it has value k in category feature X;  \n",
    "Prior is the prior probability/ expectation of the target variable;  \n",
    "a is the regularization term."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.956532Z",
     "start_time": "2020-02-29T21:35:08.949231Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from category_encoders.cat_boost import CatBoostEncoder\n",
    "# category_encoders package directly support dataframe\n",
    "\n",
    "# create some train set\n",
    "train_set = pd.DataFrame(np.array([['male',10],['female', 20], ['male',10], \n",
    "                       ['female',20],['female',15]]),\n",
    "             columns = ['Sex','Type'])\n",
    "train_y = np.array([False, True, True, False, False])\n",
    "\n",
    "# create some test set, include unknown category & missing value\n",
    "test_set = pd.DataFrame(np.array([['female',20],['male', 20], ['others',15], \n",
    "                       ['male',20],['female', 40], ['male', 25]]),\n",
    "             columns = ['Sex','Type'])\n",
    "test_set.loc[4,'Type'] = np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.965825Z",
     "start_time": "2020-02-29T21:35:08.958544Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>male</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0    male   10\n",
       "1  female   20\n",
       "2    male   10\n",
       "3  female   20\n",
       "4  female   15"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set # original train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:08.974774Z",
     "start_time": "2020-02-29T21:35:08.967672Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>others</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>male</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex Type\n",
       "0  female   20\n",
       "1    male   20\n",
       "2  others   15\n",
       "3    male   20\n",
       "4  female  NaN\n",
       "5    male   25"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set # original test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.043666Z",
     "start_time": "2020-02-29T21:35:08.976607Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.350000</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.400000</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.350000</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex      Type\n",
       "0  0.350000  0.466667\n",
       "1  0.466667  0.466667\n",
       "2  0.400000  0.400000\n",
       "3  0.466667  0.466667\n",
       "4  0.350000  0.400000\n",
       "5  0.466667  0.400000"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# in fact before fitting the trainset,we should shuffle the dataset\n",
    "# but since our dataset is generated at random, we don't need to shuffle.\n",
    "\n",
    "encoder = CatBoostEncoder(cols=['Sex','Type'], \n",
    "                          handle_unknown='value',  \n",
    "                          handle_missing='value').fit(train_set,train_y) # fit on trainset\n",
    "\n",
    "# handle_unknown & handle_missingis set to 'value'\n",
    "# they only accept ‘error’, ‘return_nan’ and ‘value’, \n",
    "# both of them have default as ‘value’\n",
    "# which returns the target mean for unknown category or missing value\n",
    "\n",
    "encoded_train = encoder.transform(train_set) # transform train set\n",
    "encoded_test = encoder.transform(test_set)  # transform test set\n",
    "\n",
    "encoded_test # only two columns are returned!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.050843Z",
     "start_time": "2020-02-29T21:35:09.045486Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4666666666666666"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# validate the result for male in the test set, which has encoded value 0.466667\n",
    "\n",
    "Prior = train_y.mean()\n",
    "n = 2 # there are two samples in the train_set that has male tag\n",
    "n_positive = 1 # only one of them has positive outcome\n",
    "a = 1 # default value\n",
    "\n",
    "encoded_male = (n_positive + a * prior) / (n + a)\n",
    "encoded_male # return 0.4666666666666666"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.110553Z",
     "start_time": "2020-02-29T21:35:09.052467Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.400000</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.400000</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.700000</td>\n",
       "      <td>0.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Sex  Type\n",
       "0  0.400000   0.4\n",
       "1  0.400000   0.4\n",
       "2  0.200000   0.2\n",
       "3  0.700000   0.7\n",
       "4  0.466667   0.4"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# encoded result for train_set\n",
    "CatBoostEncoder(cols=['Sex','Type'],\n",
    "                handle_unknown='value',  \n",
    "                handle_missing='value').fit_transform(train_set,train_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.116799Z",
     "start_time": "2020-02-29T21:35:09.112060Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.2"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# validate the above result for the third sample in the train set that have male tag\n",
    "Prior = train_y.mean()\n",
    "n = 1 # there are one samples in the train_set that has male tag and before the third sample\n",
    "n_positive = 0 #None of them has positive outcome\n",
    "a = 1 # default value\n",
    "\n",
    "encoded_male = (n_positive + a * Prior) / (n + a)\n",
    "encoded_male # return 0.2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Time Series Variables"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sometime the dataset might be time-series. In this case, we can utilize the Featuretools package in python to perform automated feature engineering. Specifically, we can \"accumulate\" information across time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.388578Z",
     "start_time": "2020-02-29T21:35:09.118254Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Customer ID</th>\n",
       "      <th>Seconds Stay</th>\n",
       "      <th>Item Purchase</th>\n",
       "      <th>Time</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>Target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>001</td>\n",
       "      <td>100</td>\n",
       "      <td>Apple</td>\n",
       "      <td>2020-01-01</td>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>002</td>\n",
       "      <td>20</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2020-01-01</td>\n",
       "      <td>female</td>\n",
       "      <td>30</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>003</td>\n",
       "      <td>50</td>\n",
       "      <td>Orange</td>\n",
       "      <td>2020-01-01</td>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>001</td>\n",
       "      <td>13</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2020-01-03</td>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>002</td>\n",
       "      <td>30</td>\n",
       "      <td>Apple</td>\n",
       "      <td>2020-01-03</td>\n",
       "      <td>female</td>\n",
       "      <td>30</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>001</td>\n",
       "      <td>90</td>\n",
       "      <td>Orange</td>\n",
       "      <td>2020-01-06</td>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>003</td>\n",
       "      <td>5</td>\n",
       "      <td>Orange</td>\n",
       "      <td>2020-01-07</td>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Customer ID  Seconds Stay Item Purchase       Time     Sex  Age  Target\n",
       "0         001           100         Apple 2020-01-01    male   35       1\n",
       "1         002            20           NaN 2020-01-01  female   30       0\n",
       "2         003            50        Orange 2020-01-01    male   20       1\n",
       "3         001            13           NaN 2020-01-03    male   35       0\n",
       "4         002            30         Apple 2020-01-03  female   30       1\n",
       "5         001            90        Orange 2020-01-06    male   35       1\n",
       "6         003             5        Orange 2020-01-07    male   20       1"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Synthesize some sample data to record each users' behaviors after each login activities,\n",
    "# such as users' stay time, products purchased, etc.\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import featuretools as ft\n",
    "import datetime\n",
    "\n",
    "raw_dataset = np.array([['001',100, 'Apple', '2020/01/01', 'male', 35, 1],\n",
    "                        ['002',20, np.nan, '2020/01/01', 'female', 30, 0],\n",
    "                        ['003',50, 'Orange','2020/01/01', 'male', 20, 1],\n",
    "                        ['001', 13, np.nan, '2020/01/03', 'male', 35, 0],\n",
    "                        ['002', 30, 'Apple', '2020/01/03','female', 30, 1], \n",
    "                        ['001', 90, 'Orange', '2020/01/06', 'male', 35, 1], \n",
    "                        ['003', 5, 'Orange', '2020/01/07', 'male', 20, 1]])\n",
    "\n",
    "dataset = pd.DataFrame(raw_dataset, columns = ['Customer ID', 'Seconds Stay', 'Item Purchase',\n",
    "                                               'Time', 'Sex', 'Age', 'Target'])\n",
    "dataset['Seconds Stay'] = dataset['Seconds Stay'].astype(int)\n",
    "dataset['Target'] = dataset['Target'].astype(int)\n",
    "dataset['Age'] = dataset['Age'].astype(int)\n",
    "dataset['Time'] = pd.to_datetime(dataset['Time'])\n",
    "dataset['Item Purchase'] = dataset['Item Purchase'].replace(\"nan\", np.nan)\n",
    "\n",
    "dataset # in Item Purchase variable, NaN value means that the client didn't purchase anything"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Time Series Categorical Features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One possible data science question might be: how to predict customer purchase behavior in the above synthetic data. Specifically, we may want to predict whether customer 002 will buy something when he login on 2020-01-08.\n",
    "\n",
    "In the above dataset, the only categorical variable is Item Purchase. Based on this categorical variable, we can synthesize some new categorical/numeric variables: how many purchase has he made before each login activities, how many unique items have he purchased  before each login activities, what is his favorite product before each login activities.  \n",
    "\n",
    "These variables can be easily generated through the Featuretools package."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-10T17:10:05.270400Z",
     "start_time": "2020-01-10T17:10:05.266485Z"
    }
   },
   "source": [
    "Some useful feature transformation offered in featuretools:  \n",
    "- COUNT: Determines the total number of values, excluding NaN before a give time.\n",
    "- Mode: Determines the most commonly repeated value before a give time.\n",
    "- NumUnique: Determines the number of distinct values, ignoring NaN values before a give time.\n",
    "- Entropy: Calculates the entropy for a categorical variable before a give time.\n",
    "- First: Determines the first value in a list before a give time.\n",
    "- Last: Determines the last value in a list before a give time.  \n",
    "  \n",
    "There are far more feature transformation available in featuretools, please reference [official website](https://docs.featuretools.com/en/stable/api_reference.html#aggregation-primitives)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Time Series Continuous Features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Assume we have the same data science question as above: we want to predict whether the customer 002 will buy when he login on 2020-01-08.  \n",
    "\n",
    "The only continuous variable in the above data is Seconds Stay, which is how long each customer stays after each login. Based on this continuous variable, we can perform feature engineering and synthesize the following new variables: his average stay time before each login, the standard deviation of his stay time before each login, the moving average of his stay time before each login, etc.\n",
    "\n",
    "These variables can also be easily implemented through the Featuretools package."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Some useful feature transformation offered in featuretools:  \n",
    "- COUNT: Determines the total number of values, excluding NaN before a give time.\n",
    "- First: Determines the first value in a list before a give time.\n",
    "- Last: Determines the last value in a list before a give time.\n",
    "- Mean: Computes the average for a list of values before a give time.\n",
    "- Sum: Calculates the total addition, ignoring NaN before a give time.\n",
    "- Min: Calculates the smallest value, ignoring NaN values before a give time.\n",
    "- Max: Calculates the highest value, ignoring NaN values before a give time.\n",
    "- Std: Computes the dispersion relative to the mean value, ignoring NaN before a give time.\n",
    "- Median: Determines the middlemost number in a list of values before a give time.\n",
    "- Trend: Calculates the trend of a variable over time before a give time.  \n",
    "  \n",
    "There are far more feature transformation available in featuretools, please reference [official website](https://docs.featuretools.com/en/stable/api_reference.html#aggregation-primitives)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Implementation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.399382Z",
     "start_time": "2020-02-29T21:35:09.390232Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Customer ID</th>\n",
       "      <th>Seconds Stay</th>\n",
       "      <th>Item Purchase</th>\n",
       "      <th>Time</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>Target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>001</td>\n",
       "      <td>100</td>\n",
       "      <td>Apple</td>\n",
       "      <td>2020-01-01</td>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>002</td>\n",
       "      <td>20</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2020-01-01</td>\n",
       "      <td>female</td>\n",
       "      <td>30</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>003</td>\n",
       "      <td>50</td>\n",
       "      <td>Orange</td>\n",
       "      <td>2020-01-01</td>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>001</td>\n",
       "      <td>13</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2020-01-03</td>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>002</td>\n",
       "      <td>30</td>\n",
       "      <td>Apple</td>\n",
       "      <td>2020-01-03</td>\n",
       "      <td>female</td>\n",
       "      <td>30</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>001</td>\n",
       "      <td>90</td>\n",
       "      <td>Orange</td>\n",
       "      <td>2020-01-06</td>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>003</td>\n",
       "      <td>5</td>\n",
       "      <td>Orange</td>\n",
       "      <td>2020-01-07</td>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Customer ID  Seconds Stay Item Purchase       Time     Sex  Age  Target\n",
       "0         001           100         Apple 2020-01-01    male   35       1\n",
       "1         002            20           NaN 2020-01-01  female   30       0\n",
       "2         003            50        Orange 2020-01-01    male   20       1\n",
       "3         001            13           NaN 2020-01-03    male   35       0\n",
       "4         002            30         Apple 2020-01-03  female   30       1\n",
       "5         001            90        Orange 2020-01-06    male   35       1\n",
       "6         003             5        Orange 2020-01-07    male   20       1"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# original dataset\n",
    "dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Create EntitySet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.412203Z",
     "start_time": "2020-02-29T21:35:09.400969Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Customer ID</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>001</td>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>002</td>\n",
       "      <td>female</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>003</td>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Customer ID     Sex  Age\n",
       "0         001    male   35\n",
       "1         002  female   30\n",
       "2         003    male   20"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# firstly, we need to create EntitySet which is a collection of entities \n",
    "# and the relationships between them\n",
    "# They are useful for preparing raw, structured datasets for auto feature engineering.\n",
    "\n",
    "es = ft.EntitySet(id=\"customer_data\") # create empty EntitySet\n",
    "\n",
    "# one entity should be each customers\n",
    "# the dataset contains information at customer level such as Sex, Age\n",
    "df_customer = dataset[['Customer ID', 'Sex', 'Age']].drop_duplicates()\n",
    "df_customer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.424028Z",
     "start_time": "2020-02-29T21:35:09.413903Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Entity: Customer\n",
       "  Variables:\n",
       "    Customer ID (dtype: index)\n",
       "    Sex (dtype: categorical)\n",
       "    Age (dtype: numeric)\n",
       "  Shape:\n",
       "    (Rows: 3, Columns: 3)"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# now we will add this entity into the EntitySet\n",
    "es = es.entity_from_dataframe(entity_id=\"Customer\",\n",
    "                              dataframe=df_customer,\n",
    "                              index= 'Customer ID') # the Customer ID is the variable to index the entity\n",
    "\n",
    "es['Customer']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.440692Z",
     "start_time": "2020-02-29T21:35:09.425622Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Entity: Transaction\n",
       "  Variables:\n",
       "    index (dtype: index)\n",
       "    Customer ID (dtype: categorical)\n",
       "    Time (dtype: datetime_time_index)\n",
       "    Item Purchase (dtype: categorical)\n",
       "    Seconds Stay (dtype: numeric)\n",
       "    Target (dtype: numeric)\n",
       "  Shape:\n",
       "    (Rows: 7, Columns: 6)"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# the second entity should be each transaction\n",
    "# we also have information at transaction level, such as Item Purchase, Seconds Stay\n",
    "es = es.entity_from_dataframe(entity_id=\"Transaction\",\n",
    "                              dataframe=dataset[[\"Customer ID\",\"Seconds Stay\", \n",
    "                                                 \"Item Purchase\", \n",
    "                                                 \"Time\",\"Target\"]].reset_index(),\n",
    "                              index=\"index\", # the variable used to index the entity\n",
    "                              time_index=\"Time\", # the time index\n",
    "                              variable_types={\"Item Purchase\": ft.variable_types.Categorical, \n",
    "                                              \"Seconds Stay\": ft.variable_types.Numeric,\n",
    "                                              \"Target\": ft.variable_types.Numeric})\n",
    "es['Transaction']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.447624Z",
     "start_time": "2020-02-29T21:35:09.442535Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Entityset: customer_data\n",
       "  Entities:\n",
       "    Customer [Rows: 3, Columns: 3]\n",
       "    Transaction [Rows: 7, Columns: 6]\n",
       "  Relationships:\n",
       "    Transaction.Customer ID -> Customer.Customer ID"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# now we will add a relationship\n",
    "relationship = ft.Relationship(es[\"Customer\"][\"Customer ID\"],\n",
    "                               es[\"Transaction\"][\"Customer ID\"])\n",
    "# Each customer has multiple transactions associated with it, so it is called it the \n",
    "# parent entity, while the transactions entity is known as the child entity\n",
    "\n",
    "es = es.add_relationship(relationship)\n",
    "es"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Set up cut-time"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "More information can be viewed at Featuretools official website: https://docs.featuretools.com/en/stable/automated_feature_engineering/handling_time.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.457860Z",
     "start_time": "2020-02-29T21:35:09.449106Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Customer ID</th>\n",
       "      <th>Time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>001</td>\n",
       "      <td>2020-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>002</td>\n",
       "      <td>2020-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>003</td>\n",
       "      <td>2020-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>001</td>\n",
       "      <td>2020-01-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>002</td>\n",
       "      <td>2020-01-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>001</td>\n",
       "      <td>2020-01-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>003</td>\n",
       "      <td>2020-01-07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Customer ID       Time\n",
       "0         001 2020-01-01\n",
       "1         002 2020-01-01\n",
       "2         003 2020-01-01\n",
       "3         001 2020-01-03\n",
       "4         002 2020-01-03\n",
       "5         001 2020-01-06\n",
       "6         003 2020-01-07"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create cut time\n",
    "# Oftentimes, in time series data sets\n",
    "# they may come from different points in time\n",
    "# if we cannot handle time information well\n",
    "# we may leak future inforamtion into the model\n",
    "\n",
    "# So we need to set Cut-time\n",
    "# it helps Featuretool to realize that it needs to consider information leakage problem\n",
    "# we can pass a dataframe to Featuretools to specify the corresponding cut time for each row\n",
    "# it specifies the last point in time that a row’s data can be used for feature generation\n",
    "# that is, for each row of data, \n",
    "# when performing corresponding feature engineering, \n",
    "# we will only consider the information before the cut time point of this row\n",
    "\n",
    "ct = dataset[['Customer ID','Time']].copy() # the cut-off dataframe\n",
    "ct"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.467634Z",
     "start_time": "2020-02-29T21:35:09.459559Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Customer ID</th>\n",
       "      <th>Time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>001</td>\n",
       "      <td>2019-12-31 23:59:59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>002</td>\n",
       "      <td>2019-12-31 23:59:59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>003</td>\n",
       "      <td>2019-12-31 23:59:59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>001</td>\n",
       "      <td>2020-01-02 23:59:59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>002</td>\n",
       "      <td>2020-01-02 23:59:59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>001</td>\n",
       "      <td>2020-01-05 23:59:59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>003</td>\n",
       "      <td>2020-01-06 23:59:59</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Customer ID                Time\n",
       "0         001 2019-12-31 23:59:59\n",
       "1         002 2019-12-31 23:59:59\n",
       "2         003 2019-12-31 23:59:59\n",
       "3         001 2020-01-02 23:59:59\n",
       "4         002 2020-01-02 23:59:59\n",
       "5         001 2020-01-05 23:59:59\n",
       "6         003 2020-01-06 23:59:59"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# but in our case, we want the cut-off time for each row to be slightly early in our case\n",
    "# because we don't have the current row information to predict the purchase at that time\n",
    "# for example, we won't know which product a custimer bought until he finished the purchase\n",
    "\n",
    "ct['Time'] = ct['Time'] + datetime.timedelta(seconds = -1) \n",
    "# set cut-off time to be 1 seconds early than the login time\n",
    "ct"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Auto Feature Engineering"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One strategy to use Featuretools is automatically generating a large number of features without specifying what transformations we want for each original features. We can later filter the result feature set and select a subset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.751575Z",
     "start_time": "2020-02-29T21:35:09.469083Z"
    }
   },
   "outputs": [],
   "source": [
    "# start feature engineering without specifying what transformation we want\n",
    "fm, features = ft.dfs(entityset=es,\n",
    "                      target_entity='Customer', # in our case, aggreate data at customer level\n",
    "                      max_depth=2, # set the depth to be 2, which means interaction term\n",
    "                      # include at most 2 features\n",
    "                      cutoff_time=ct,\n",
    "                      cutoff_time_in_index=True) \n",
    "\n",
    "# we can even specify the training_window for features just like moving-avg\n",
    "# we will not demonstrate this because of limited space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.756951Z",
     "start_time": "2020-02-29T21:35:09.753396Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Sex', 'Age', 'SUM(Transaction.Target)',\n",
       "       'SUM(Transaction.Seconds Stay)', 'STD(Transaction.Target)',\n",
       "       'STD(Transaction.Seconds Stay)', 'MAX(Transaction.Target)',\n",
       "       'MAX(Transaction.Seconds Stay)', 'SKEW(Transaction.Target)',\n",
       "       'SKEW(Transaction.Seconds Stay)', 'MIN(Transaction.Target)',\n",
       "       'MIN(Transaction.Seconds Stay)', 'MEAN(Transaction.Target)',\n",
       "       'MEAN(Transaction.Seconds Stay)', 'COUNT(Transaction)',\n",
       "       'NUM_UNIQUE(Transaction.Item Purchase)',\n",
       "       'MODE(Transaction.Item Purchase)', 'NUM_UNIQUE(Transaction.DAY(Time))',\n",
       "       'NUM_UNIQUE(Transaction.YEAR(Time))',\n",
       "       'NUM_UNIQUE(Transaction.MONTH(Time))',\n",
       "       'NUM_UNIQUE(Transaction.WEEKDAY(Time))', 'MODE(Transaction.DAY(Time))',\n",
       "       'MODE(Transaction.YEAR(Time))', 'MODE(Transaction.MONTH(Time))',\n",
       "       'MODE(Transaction.WEEKDAY(Time))'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fm; # the feature engineering result\n",
    "fm.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.762848Z",
     "start_time": "2020-02-29T21:35:09.758516Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<Feature: Sex>,\n",
       " <Feature: Age>,\n",
       " <Feature: SUM(Transaction.Target)>,\n",
       " <Feature: SUM(Transaction.Seconds Stay)>,\n",
       " <Feature: STD(Transaction.Target)>,\n",
       " <Feature: STD(Transaction.Seconds Stay)>,\n",
       " <Feature: MAX(Transaction.Target)>,\n",
       " <Feature: MAX(Transaction.Seconds Stay)>,\n",
       " <Feature: SKEW(Transaction.Target)>,\n",
       " <Feature: SKEW(Transaction.Seconds Stay)>,\n",
       " <Feature: MIN(Transaction.Target)>,\n",
       " <Feature: MIN(Transaction.Seconds Stay)>,\n",
       " <Feature: MEAN(Transaction.Target)>,\n",
       " <Feature: MEAN(Transaction.Seconds Stay)>,\n",
       " <Feature: COUNT(Transaction)>,\n",
       " <Feature: NUM_UNIQUE(Transaction.Item Purchase)>,\n",
       " <Feature: MODE(Transaction.Item Purchase)>,\n",
       " <Feature: NUM_UNIQUE(Transaction.DAY(Time))>,\n",
       " <Feature: NUM_UNIQUE(Transaction.YEAR(Time))>,\n",
       " <Feature: NUM_UNIQUE(Transaction.MONTH(Time))>,\n",
       " <Feature: NUM_UNIQUE(Transaction.WEEKDAY(Time))>,\n",
       " <Feature: MODE(Transaction.DAY(Time))>,\n",
       " <Feature: MODE(Transaction.YEAR(Time))>,\n",
       " <Feature: MODE(Transaction.MONTH(Time))>,\n",
       " <Feature: MODE(Transaction.WEEKDAY(Time))>]"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "features # the name and operation of each features after feature engineering\n",
    "# the auto feature engineering generated some features that makes no sense\n",
    "# in fact, we can specify the transformation for each features to save time and memory space"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Specify transformation for each features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also specify the transformation we want for each original feature, therefore, having more control over the feature engineering process and save time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.768316Z",
     "start_time": "2020-02-29T21:35:09.764553Z"
    }
   },
   "outputs": [],
   "source": [
    "from featuretools.primitives import TimeSinceLast\n",
    "# import TimeSinceLast so that we can specify the time delta unit\n",
    "\n",
    "operation_dict = {(\"count\", TimeSinceLast(unit = \"hours\")): {\"include_variables\": {\"Transaction\": [\"index\"]}},\n",
    "                  (\"entropy\", \n",
    "                   \"num_unique\",\n",
    "                   \"mode\"): {\"include_variables\": {\"Transaction\": [\"Item Purchase\"]}},\n",
    "                  (\"mean\", \n",
    "                   \"max\",\n",
    "                   \"median\",\n",
    "                   \"skew\",\n",
    "                   \"std\"): {\"include_variables\": {\"Transaction\": [\"Seconds Stay\",\"Target\"]}},\n",
    "                   \"last\": {\"include_variables\": {\"Transaction\": [\"Item Purchase\",\"Seconds Stay\",\n",
    "                                                                  \"Target\"]}}\n",
    "                 }\n",
    "\n",
    "# we want a count operation showing how many login activities before each transaction\n",
    "# we want a TimeSinceLast operation showing the time gap between last login and this time\n",
    "# we want the entropy, num_unique, mode and last operation for categorical variable Item Purchase\n",
    "# we want mean, max, median, skew, std and last operation for numeric variable Seconds Stay, Target(lag)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.962315Z",
     "start_time": "2020-02-29T21:35:09.770041Z"
    }
   },
   "outputs": [],
   "source": [
    "fm, features = ft.dfs(entityset=es,\n",
    "                      target_entity='Customer',\n",
    "                      max_depth=2,\n",
    "                      cutoff_time=ct,\n",
    "                      cutoff_time_in_index=True, \n",
    "                      agg_primitives = ['count','entropy', 'num_unique','mode','last',\n",
    "                                        'mean','max','median','skew','std',\n",
    "                                        TimeSinceLast(unit = \"hours\")],\n",
    "                      # for simplification, we do not include transform primative\n",
    "                      # which takes one or more variables from an entity as an input \n",
    "                      # and output a new variable for that entity\n",
    "                      \n",
    "                      # difference between aggregation primitive & transform primitive\n",
    "                      # https://docs.featuretools.com/en/latest/automated_feature_engineering/primitives.html\n",
    "                      primitive_options= operation_dict # specify transformation for each features\n",
    "                      )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.967914Z",
     "start_time": "2020-02-29T21:35:09.964202Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<Feature: Sex>,\n",
       " <Feature: Age>,\n",
       " <Feature: COUNT(Transaction)>,\n",
       " <Feature: ENTROPY(Transaction.Item Purchase)>,\n",
       " <Feature: NUM_UNIQUE(Transaction.Item Purchase)>,\n",
       " <Feature: MODE(Transaction.Item Purchase)>,\n",
       " <Feature: LAST(Transaction.Target)>,\n",
       " <Feature: LAST(Transaction.Seconds Stay)>,\n",
       " <Feature: LAST(Transaction.Item Purchase)>,\n",
       " <Feature: MEAN(Transaction.Target)>,\n",
       " <Feature: MEAN(Transaction.Seconds Stay)>,\n",
       " <Feature: MAX(Transaction.Target)>,\n",
       " <Feature: MAX(Transaction.Seconds Stay)>,\n",
       " <Feature: MEDIAN(Transaction.Target)>,\n",
       " <Feature: MEDIAN(Transaction.Seconds Stay)>,\n",
       " <Feature: SKEW(Transaction.Target)>,\n",
       " <Feature: SKEW(Transaction.Seconds Stay)>,\n",
       " <Feature: STD(Transaction.Target)>,\n",
       " <Feature: STD(Transaction.Seconds Stay)>,\n",
       " <Feature: TIME_SINCE_LAST(Transaction.Time, unit=hours)>]"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-02-29T21:35:09.991103Z",
     "start_time": "2020-02-29T21:35:09.969366Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>COUNT(Transaction)</th>\n",
       "      <th>ENTROPY(Transaction.Item Purchase)</th>\n",
       "      <th>NUM_UNIQUE(Transaction.Item Purchase)</th>\n",
       "      <th>MODE(Transaction.Item Purchase)</th>\n",
       "      <th>LAST(Transaction.Target)</th>\n",
       "      <th>LAST(Transaction.Seconds Stay)</th>\n",
       "      <th>LAST(Transaction.Item Purchase)</th>\n",
       "      <th>MEAN(Transaction.Target)</th>\n",
       "      <th>MEAN(Transaction.Seconds Stay)</th>\n",
       "      <th>MAX(Transaction.Target)</th>\n",
       "      <th>MAX(Transaction.Seconds Stay)</th>\n",
       "      <th>MEDIAN(Transaction.Target)</th>\n",
       "      <th>MEDIAN(Transaction.Seconds Stay)</th>\n",
       "      <th>SKEW(Transaction.Target)</th>\n",
       "      <th>SKEW(Transaction.Seconds Stay)</th>\n",
       "      <th>STD(Transaction.Target)</th>\n",
       "      <th>STD(Transaction.Seconds Stay)</th>\n",
       "      <th>TIME_SINCE_LAST(Transaction.Time, unit=hours)</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Customer ID</th>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>001</th>\n",
       "      <th>2019-12-31 23:59:59</th>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>002</th>\n",
       "      <th>2019-12-31 23:59:59</th>\n",
       "      <td>female</td>\n",
       "      <td>30</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>003</th>\n",
       "      <th>2019-12-31 23:59:59</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>001</th>\n",
       "      <th>2020-01-02 23:59:59</th>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>Apple</td>\n",
       "      <td>1.0</td>\n",
       "      <td>100.0</td>\n",
       "      <td>Apple</td>\n",
       "      <td>1.0</td>\n",
       "      <td>100.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>100.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>100.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>47.999722</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>002</th>\n",
       "      <th>2020-01-02 23:59:59</th>\n",
       "      <td>female</td>\n",
       "      <td>30</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>47.999722</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>001</th>\n",
       "      <th>2020-01-05 23:59:59</th>\n",
       "      <td>male</td>\n",
       "      <td>35</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.693147</td>\n",
       "      <td>1.0</td>\n",
       "      <td>Apple</td>\n",
       "      <td>0.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.5</td>\n",
       "      <td>56.5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>100.0</td>\n",
       "      <td>0.5</td>\n",
       "      <td>56.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.707107</td>\n",
       "      <td>61.51829</td>\n",
       "      <td>71.999722</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>003</th>\n",
       "      <th>2020-01-06 23:59:59</th>\n",
       "      <td>male</td>\n",
       "      <td>20</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>Orange</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>Orange</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>143.999722</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    Sex  Age  COUNT(Transaction)  \\\n",
       "Customer ID time                                                   \n",
       "001         2019-12-31 23:59:59    male   35                 0.0   \n",
       "002         2019-12-31 23:59:59  female   30                 0.0   \n",
       "003         2019-12-31 23:59:59    male   20                 0.0   \n",
       "001         2020-01-02 23:59:59    male   35                 1.0   \n",
       "002         2020-01-02 23:59:59  female   30                 1.0   \n",
       "001         2020-01-05 23:59:59    male   35                 2.0   \n",
       "003         2020-01-06 23:59:59    male   20                 1.0   \n",
       "\n",
       "                                 ENTROPY(Transaction.Item Purchase)  \\\n",
       "Customer ID time                                                      \n",
       "001         2019-12-31 23:59:59                                 NaN   \n",
       "002         2019-12-31 23:59:59                                 NaN   \n",
       "003         2019-12-31 23:59:59                                 NaN   \n",
       "001         2020-01-02 23:59:59                            0.000000   \n",
       "002         2020-01-02 23:59:59                            0.000000   \n",
       "001         2020-01-05 23:59:59                            0.693147   \n",
       "003         2020-01-06 23:59:59                            0.000000   \n",
       "\n",
       "                                 NUM_UNIQUE(Transaction.Item Purchase)  \\\n",
       "Customer ID time                                                         \n",
       "001         2019-12-31 23:59:59                                    NaN   \n",
       "002         2019-12-31 23:59:59                                    NaN   \n",
       "003         2019-12-31 23:59:59                                    NaN   \n",
       "001         2020-01-02 23:59:59                                    1.0   \n",
       "002         2020-01-02 23:59:59                                    0.0   \n",
       "001         2020-01-05 23:59:59                                    1.0   \n",
       "003         2020-01-06 23:59:59                                    1.0   \n",
       "\n",
       "                                MODE(Transaction.Item Purchase)  \\\n",
       "Customer ID time                                                  \n",
       "001         2019-12-31 23:59:59                             NaN   \n",
       "002         2019-12-31 23:59:59                             NaN   \n",
       "003         2019-12-31 23:59:59                             NaN   \n",
       "001         2020-01-02 23:59:59                           Apple   \n",
       "002         2020-01-02 23:59:59                             NaN   \n",
       "001         2020-01-05 23:59:59                           Apple   \n",
       "003         2020-01-06 23:59:59                          Orange   \n",
       "\n",
       "                                 LAST(Transaction.Target)  \\\n",
       "Customer ID time                                            \n",
       "001         2019-12-31 23:59:59                       NaN   \n",
       "002         2019-12-31 23:59:59                       NaN   \n",
       "003         2019-12-31 23:59:59                       NaN   \n",
       "001         2020-01-02 23:59:59                       1.0   \n",
       "002         2020-01-02 23:59:59                       0.0   \n",
       "001         2020-01-05 23:59:59                       0.0   \n",
       "003         2020-01-06 23:59:59                       1.0   \n",
       "\n",
       "                                 LAST(Transaction.Seconds Stay)  \\\n",
       "Customer ID time                                                  \n",
       "001         2019-12-31 23:59:59                             NaN   \n",
       "002         2019-12-31 23:59:59                             NaN   \n",
       "003         2019-12-31 23:59:59                             NaN   \n",
       "001         2020-01-02 23:59:59                           100.0   \n",
       "002         2020-01-02 23:59:59                            20.0   \n",
       "001         2020-01-05 23:59:59                            13.0   \n",
       "003         2020-01-06 23:59:59                            50.0   \n",
       "\n",
       "                                LAST(Transaction.Item Purchase)  \\\n",
       "Customer ID time                                                  \n",
       "001         2019-12-31 23:59:59                             NaN   \n",
       "002         2019-12-31 23:59:59                             NaN   \n",
       "003         2019-12-31 23:59:59                             NaN   \n",
       "001         2020-01-02 23:59:59                           Apple   \n",
       "002         2020-01-02 23:59:59                             NaN   \n",
       "001         2020-01-05 23:59:59                             NaN   \n",
       "003         2020-01-06 23:59:59                          Orange   \n",
       "\n",
       "                                 MEAN(Transaction.Target)  \\\n",
       "Customer ID time                                            \n",
       "001         2019-12-31 23:59:59                       NaN   \n",
       "002         2019-12-31 23:59:59                       NaN   \n",
       "003         2019-12-31 23:59:59                       NaN   \n",
       "001         2020-01-02 23:59:59                       1.0   \n",
       "002         2020-01-02 23:59:59                       0.0   \n",
       "001         2020-01-05 23:59:59                       0.5   \n",
       "003         2020-01-06 23:59:59                       1.0   \n",
       "\n",
       "                                 MEAN(Transaction.Seconds Stay)  \\\n",
       "Customer ID time                                                  \n",
       "001         2019-12-31 23:59:59                             NaN   \n",
       "002         2019-12-31 23:59:59                             NaN   \n",
       "003         2019-12-31 23:59:59                             NaN   \n",
       "001         2020-01-02 23:59:59                           100.0   \n",
       "002         2020-01-02 23:59:59                            20.0   \n",
       "001         2020-01-05 23:59:59                            56.5   \n",
       "003         2020-01-06 23:59:59                            50.0   \n",
       "\n",
       "                                 MAX(Transaction.Target)  \\\n",
       "Customer ID time                                           \n",
       "001         2019-12-31 23:59:59                      NaN   \n",
       "002         2019-12-31 23:59:59                      NaN   \n",
       "003         2019-12-31 23:59:59                      NaN   \n",
       "001         2020-01-02 23:59:59                      1.0   \n",
       "002         2020-01-02 23:59:59                      0.0   \n",
       "001         2020-01-05 23:59:59                      1.0   \n",
       "003         2020-01-06 23:59:59                      1.0   \n",
       "\n",
       "                                 MAX(Transaction.Seconds Stay)  \\\n",
       "Customer ID time                                                 \n",
       "001         2019-12-31 23:59:59                            NaN   \n",
       "002         2019-12-31 23:59:59                            NaN   \n",
       "003         2019-12-31 23:59:59                            NaN   \n",
       "001         2020-01-02 23:59:59                          100.0   \n",
       "002         2020-01-02 23:59:59                           20.0   \n",
       "001         2020-01-05 23:59:59                          100.0   \n",
       "003         2020-01-06 23:59:59                           50.0   \n",
       "\n",
       "                                 MEDIAN(Transaction.Target)  \\\n",
       "Customer ID time                                              \n",
       "001         2019-12-31 23:59:59                         NaN   \n",
       "002         2019-12-31 23:59:59                         NaN   \n",
       "003         2019-12-31 23:59:59                         NaN   \n",
       "001         2020-01-02 23:59:59                         1.0   \n",
       "002         2020-01-02 23:59:59                         0.0   \n",
       "001         2020-01-05 23:59:59                         0.5   \n",
       "003         2020-01-06 23:59:59                         1.0   \n",
       "\n",
       "                                 MEDIAN(Transaction.Seconds Stay)  \\\n",
       "Customer ID time                                                    \n",
       "001         2019-12-31 23:59:59                               NaN   \n",
       "002         2019-12-31 23:59:59                               NaN   \n",
       "003         2019-12-31 23:59:59                               NaN   \n",
       "001         2020-01-02 23:59:59                             100.0   \n",
       "002         2020-01-02 23:59:59                              20.0   \n",
       "001         2020-01-05 23:59:59                              56.5   \n",
       "003         2020-01-06 23:59:59                              50.0   \n",
       "\n",
       "                                 SKEW(Transaction.Target)  \\\n",
       "Customer ID time                                            \n",
       "001         2019-12-31 23:59:59                       NaN   \n",
       "002         2019-12-31 23:59:59                       NaN   \n",
       "003         2019-12-31 23:59:59                       NaN   \n",
       "001         2020-01-02 23:59:59                       NaN   \n",
       "002         2020-01-02 23:59:59                       NaN   \n",
       "001         2020-01-05 23:59:59                       NaN   \n",
       "003         2020-01-06 23:59:59                       NaN   \n",
       "\n",
       "                                 SKEW(Transaction.Seconds Stay)  \\\n",
       "Customer ID time                                                  \n",
       "001         2019-12-31 23:59:59                             NaN   \n",
       "002         2019-12-31 23:59:59                             NaN   \n",
       "003         2019-12-31 23:59:59                             NaN   \n",
       "001         2020-01-02 23:59:59                             NaN   \n",
       "002         2020-01-02 23:59:59                             NaN   \n",
       "001         2020-01-05 23:59:59                             NaN   \n",
       "003         2020-01-06 23:59:59                             NaN   \n",
       "\n",
       "                                 STD(Transaction.Target)  \\\n",
       "Customer ID time                                           \n",
       "001         2019-12-31 23:59:59                      NaN   \n",
       "002         2019-12-31 23:59:59                      NaN   \n",
       "003         2019-12-31 23:59:59                      NaN   \n",
       "001         2020-01-02 23:59:59                      NaN   \n",
       "002         2020-01-02 23:59:59                      NaN   \n",
       "001         2020-01-05 23:59:59                 0.707107   \n",
       "003         2020-01-06 23:59:59                      NaN   \n",
       "\n",
       "                                 STD(Transaction.Seconds Stay)  \\\n",
       "Customer ID time                                                 \n",
       "001         2019-12-31 23:59:59                            NaN   \n",
       "002         2019-12-31 23:59:59                            NaN   \n",
       "003         2019-12-31 23:59:59                            NaN   \n",
       "001         2020-01-02 23:59:59                            NaN   \n",
       "002         2020-01-02 23:59:59                            NaN   \n",
       "001         2020-01-05 23:59:59                       61.51829   \n",
       "003         2020-01-06 23:59:59                            NaN   \n",
       "\n",
       "                                 TIME_SINCE_LAST(Transaction.Time, unit=hours)  \n",
       "Customer ID time                                                                \n",
       "001         2019-12-31 23:59:59                                            NaN  \n",
       "002         2019-12-31 23:59:59                                            NaN  \n",
       "003         2019-12-31 23:59:59                                            NaN  \n",
       "001         2020-01-02 23:59:59                                      47.999722  \n",
       "002         2020-01-02 23:59:59                                      47.999722  \n",
       "001         2020-01-05 23:59:59                                      71.999722  \n",
       "003         2020-01-06 23:59:59                                     143.999722  "
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fm # data set after feature engineering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": true,
   "toc_position": {
    "height": "720px",
    "left": "35.9336px",
    "top": "120.938px",
    "width": "360px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
